Skip to content

Commit 3bfd4b1

Browse files
committed
feat(seo): add per-page SEO metadata to all 70 pages
Add og:type, article:author, article:section, and article:tag frontmatter fields to all documentation pages for improved search engine optimization and social media sharing.
1 parent 3f1bb09 commit 3bfd4b1

69 files changed

Lines changed: 273 additions & 0 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

docs/beyond/concepts/blob-file-api.mdx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22
title: "Blob & File API in JavaScript"
33
sidebarTitle: "Blob & File API"
44
description: "Learn JavaScript Blob and File APIs for binary data. Create, read, and manipulate files, handle uploads, generate downloads, and work with FileReader."
5+
"og:type": "article"
6+
"article:author": "Leonardo Maldonado"
7+
"article:section": "Data Handling"
8+
"article:tag": "blob file api, file upload, filereader, binary data, file download, file handling"
59
---
610

711
How do you let users upload images? How do you create a downloadable file from data generated in JavaScript? How can you read the contents of a file the user selected?

docs/beyond/concepts/computed-property-names.mdx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22
title: "Computed Property Names in JS"
33
sidebarTitle: "Computed Property Names"
44
description: "Learn JavaScript computed property names. Create dynamic object keys with variables, expressions, Symbols, and computed methods for cleaner ES6+ code."
5+
"og:type": "article"
6+
"article:author": "Leonardo Maldonado"
7+
"article:section": "Modern Syntax & Operators"
8+
"article:tag": "computed property names, dynamic object keys, es6 syntax, bracket notation, symbols"
59
---
610

711
Have you ever needed to create an object where the property name comes from a variable? Before ES6, this required creating the object first, then adding the property in a separate step. Computed property names changed everything.

docs/beyond/concepts/cookies.mdx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22
title: "Cookies in JavaScript"
33
sidebarTitle: "Cookies"
44
description: "Learn JavaScript cookies. Understand how to read, write, and delete cookies, cookie attributes like HttpOnly and SameSite, and security best practices."
5+
"og:type": "article"
6+
"article:author": "Leonardo Maldonado"
7+
"article:section": "Browser Storage"
8+
"article:tag": "cookies, http cookies, cookie attributes, httponly samesite, cookie security"
59
---
610

711
Why do websites "remember" you're logged in, even after closing your browser? How does that shopping cart persist across tabs? Why can some data survive for weeks while other data vanishes when you close a tab?

docs/beyond/concepts/custom-events.mdx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22
title: "Custom Events in JavaScript"
33
sidebarTitle: "Custom Events"
44
description: "Learn JavaScript custom events. Create and dispatch CustomEvent, pass data with detail, and build event-driven architectures."
5+
"og:type": "article"
6+
"article:author": "Leonardo Maldonado"
7+
"article:section": "Events"
8+
"article:tag": "custom events, customevent, event dispatch, event-driven architecture, event detail"
59
---
610

711
What if you could create your own events, just like `click` or `submit`? What if a shopping cart could announce "item added!" and any part of your app could listen and respond? How do you build components that communicate without knowing about each other?

docs/beyond/concepts/debouncing-throttling.mdx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22
title: "Debouncing & Throttling in JS"
33
sidebarTitle: "Debouncing & Throttling: Control Event Frequency"
44
description: "Learn debouncing and throttling in JavaScript. Optimize event handlers, reduce API calls, and implement both patterns from scratch with real-world examples."
5+
"og:type": "article"
6+
"article:author": "Leonardo Maldonado"
7+
"article:section": "Memory & Performance"
8+
"article:tag": "debouncing throttling, event optimization, api calls, performance patterns, event handlers"
59
---
610

711
What happens when a user types in a search box at 60 characters per minute? Or when they scroll through your page, triggering hundreds of events per second? Without proper handling, your application can grind to a halt, making unnecessary API calls or blocking the main thread with expensive computations.

docs/beyond/concepts/event-bubbling-capturing.mdx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22
title: "Event Bubbling & Capturing"
33
sidebarTitle: "Event Bubbling & Capturing"
44
description: "Learn event bubbling and capturing in JavaScript. Understand the three phases of event propagation, stopPropagation, and when to use capturing vs bubbling."
5+
"og:type": "article"
6+
"article:author": "Leonardo Maldonado"
7+
"article:section": "Events"
8+
"article:tag": "event bubbling, event capturing, event propagation, stoppropagation, dom events"
59
---
610

711
You click a button inside a `<div>`, but both the button's handler AND the div's handler fire. Why? Or you add a click listener to a parent element, and it somehow catches clicks on all its children. How does that work?

docs/beyond/concepts/event-delegation.mdx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22
title: "Event Delegation in JavaScript"
33
sidebarTitle: "Event Delegation"
44
description: "Learn event delegation in JavaScript. Handle events efficiently using bubbling, manage dynamic elements, reduce memory usage, and implement common patterns."
5+
"og:type": "article"
6+
"article:author": "Leonardo Maldonado"
7+
"article:section": "Events"
8+
"article:tag": "event delegation, event bubbling, dynamic elements, memory efficiency, event handling"
59
---
610

711
How do you handle click events on a list that could have 10, 100, or 1,000 items? What about elements that don't even exist yet — dynamically added after the page loads? If you're adding individual event listeners to each element, you're working too hard and using too much memory.

docs/beyond/concepts/garbage-collection.mdx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22
title: "JavaScript Garbage Collection"
33
sidebarTitle: "Garbage Collection"
44
description: "Learn how JavaScript garbage collection works. Understand mark-and-sweep, reachability, and how to write memory-efficient code that helps the engine."
5+
"og:type": "article"
6+
"article:author": "Leonardo Maldonado"
7+
"article:section": "Memory & Performance"
8+
"article:tag": "garbage collection, mark and sweep, reachability, memory efficiency, gc algorithm"
59
---
610

711
What happens to objects after you stop using them? When you create a variable, assign it an object, and then reassign it to something else, where does that original object go? Does it just sit there forever, taking up space?

docs/beyond/concepts/getters-setters.mdx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22
title: "Getters & Setters in JavaScript"
33
sidebarTitle: "Getters & Setters: Computed Properties"
44
description: "Learn JavaScript getters and setters. Create computed properties, validate data on assignment, and build encapsulated objects with get and set accessors."
5+
"og:type": "article"
6+
"article:author": "Leonardo Maldonado"
7+
"article:section": "Objects & Properties"
8+
"article:tag": "javascript getters setters, computed properties, property accessors, data validation, encapsulation"
59
---
610

711
How do you create a property that calculates its value on the fly? What if you want to validate data every time someone assigns a value? And how do you make a property that looks normal but does something behind the scenes?

docs/beyond/concepts/hoisting.mdx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22
title: "Hoisting in JavaScript"
33
sidebarTitle: "Hoisting: How Declarations Move to the Top"
44
description: "Learn JavaScript hoisting: how var, let, const, and function declarations are moved to the top of their scope. Understand the Temporal Dead Zone."
5+
"og:type": "article"
6+
"article:author": "Leonardo Maldonado"
7+
"article:section": "Language Mechanics"
8+
"article:tag": "javascript hoisting, var hoisting, function hoisting, temporal dead zone, declaration vs initialization, scope hoisting"
59
---
610

711
Why can you call a function before it appears in your code? Why does `var` give you `undefined` instead of an error, while `let` throws a `ReferenceError`? How does JavaScript seem to know about variables before they're declared?

0 commit comments

Comments
 (0)