diff --git a/.github/workflows/lighthouse-report.yml b/.github/workflows/lighthouse-report.yml
index d12e957f5..fed473359 100644
--- a/.github/workflows/lighthouse-report.yml
+++ b/.github/workflows/lighthouse-report.yml
@@ -41,10 +41,7 @@ jobs:
urls: |
http://localhost:3000
http://localhost:3000/docs
- http://localhost:3000/docs/category/javascript
http://localhost:3000/courses
- http://localhost:3000/courses/category/reactjs
- http://localhost:3000/blog
http://localhost:3000/showcase
http://localhost:3000/community
http://localhost:3000/docs/tags
diff --git a/docs/guides/markdown-features/example-file.docx b/docs/guides/markdown-features/example-file.docx
new file mode 100644
index 000000000..8f3766b21
Binary files /dev/null and b/docs/guides/markdown-features/example-file.docx differ
diff --git a/docs/guides/markdown-features/markdown-feature-plugins.mdx b/docs/guides/markdown-features/markdown-feature-plugins.mdx
new file mode 100644
index 000000000..1e0b37df0
--- /dev/null
+++ b/docs/guides/markdown-features/markdown-feature-plugins.mdx
@@ -0,0 +1,227 @@
+---
+id: plugins
+description: Using MDX plugins to expand Markdown functionality in CodeHarborHub
+slug: /markdown-features/plugins
+---
+
+# MDX Plugins
+
+CodeHarborHub uses [MDX](https://mdxjs.com/) to power its documentation. Sometimes, you may want to extend or tweak Markdown syntax. For example:
+
+- Embed a YouTube video using image-like syntax: ``
+- Style standalone links as social cards
+- Automatically prepend a copyright notice to every page
+
+The answer is: **create an MDX plugin!**
+MDX supports a powerful [plugin system](https://mdxjs.com/advanced/plugins/) to customize how Markdown is parsed and transformed into JSX.
+
+There are three common plugin use-cases:
+
+- Use existing [Remark plugins](https://github.com/remarkjs/remark/blob/main/doc/plugins.md#list-of-plugins) or [Rehype plugins](https://github.com/rehypejs/rehype/blob/main/doc/plugins.md#list-of-plugins)
+- Transform elements produced by MDX syntax
+- Introduce **new syntax** to MDX
+
+
+
+## How MDX Plugins Work
+
+When Markdown is compiled, it goes through two intermediate steps:
+
+1. **Markdown AST (MDAST)**
+2. **Hypertext AST (HAST)**
+3. JSX Output
+
+Plugins operate on these ASTs:
+
+* **[Remark](https://github.com/remarkjs/remark/)** → processes the Markdown AST
+* **[Rehype](https://github.com/rehypejs/rehype/)** → processes the Hypertext AST
+
+:::tip
+Use plugins to introduce shorter syntax for frequently used JSX elements.
+For example, CodeHarborHub’s [admonition blocks](./markdown-features-admonitions.mdx) are powered by a Remark plugin.
+:::
+
+
+
+## Default Plugins
+
+Docusaurus automatically injects a set of default Remark plugins during Markdown processing.
+These handle tasks such as:
+
+- Generating a **Table of Contents**
+- Adding **anchor links** to each heading
+- Transforming images and links to `require()` calls
+
+These built-in plugins are great examples to inspire your own custom plugins.
+
+
+
+## Installing Plugins
+
+An MDX plugin is usually an **npm package**, so install it like any other dependency.
+
+Example: adding math support:
+
+```bash npm2yarn
+npm install --save remark-math@5 rehype-katex@6
+```
+
+
+ Remark vs Rehype in action
+
+* `remark-math` extracts `$...$` math expressions from Markdown and transforms them into a JSX placeholder.
+* `rehype-katex` then takes those placeholders and renders them into KaTeX-powered HTML.
+
+
+:::warning
+Many official Remark/Rehype plugins are **ES Modules only**. Docusaurus supports ESM, but we recommend using an **ESM config file** for easier imports.
+:::
+
+
+
+## Adding Plugins to `docusaurus.config.js`
+
+Once installed, import and add the plugin to your config:
+
+```js title="docusaurus.config.js"
+// highlight-start
+import remarkMath from 'remark-math';
+import rehypeKatex from 'rehype-katex';
+// highlight-end
+
+export default {
+ presets: [
+ [
+ '@docusaurus/preset-classic',
+ {
+ docs: {
+ remarkPlugins: [remarkMath],
+ rehypePlugins: [rehypeKatex],
+ },
+ },
+ ],
+ ],
+};
+```
+
+Using **CommonJS**? Dynamic imports make it work:
+
+```js title="docusaurus.config.js"
+module.exports = async function createConfigAsync() {
+ return {
+ presets: [
+ [
+ '@docusaurus/preset-classic',
+ {
+ docs: {
+ remarkPlugins: [(await import('remark-math')).default],
+ rehypePlugins: [(await import('rehype-katex')).default],
+ },
+ },
+ ],
+ ],
+ };
+};
+```
+
+---
+
+## Configuring Plugins
+
+Some plugins accept custom options. Use `[plugin, options]` syntax:
+
+```js title="docusaurus.config.js"
+import rehypeKatex from 'rehype-katex';
+
+export default {
+ presets: [
+ [
+ '@docusaurus/preset-classic',
+ {
+ docs: {
+ rehypePlugins: [
+ [rehypeKatex, {strict: false}],
+ ],
+ },
+ },
+ ],
+ ],
+};
+```
+
+Check the plugin’s documentation for available options.
+
+
+
+## Creating Your Own Plugin
+
+If no existing plugin fits your needs, you can create one. A plugin is a function that operates on the AST.
+
+Example: prefix every `h2` heading with `Section X.`
+
+```js title="src/remark/section-prefix.js"
+import {visit} from 'unist-util-visit';
+
+const plugin = () => {
+ return async (ast) => {
+ let count = 1;
+ visit(ast, 'heading', (node) => {
+ if (node.depth === 2 && node.children.length > 0) {
+ node.children.unshift({
+ type: 'text',
+ value: `Section ${count}. `,
+ });
+ count++;
+ }
+ });
+ };
+};
+
+export default plugin;
+```
+
+Import and register it:
+
+```js title="docusaurus.config.js"
+import sectionPrefix from './src/remark/section-prefix';
+
+export default {
+ presets: [
+ [
+ '@docusaurus/preset-classic',
+ {
+ docs: {
+ remarkPlugins: [sectionPrefix],
+ },
+ },
+ ],
+ ],
+};
+```
+
+:::tip
+The `transformer` function receives a second parameter, [`vfile`](https://github.com/vfile/vfile), which provides metadata like the current Markdown file’s path.
+:::
+
+
+
+## Processing Order
+
+By default, Docusaurus runs its internal plugins **before** your custom plugins. If you need to run your plugin first:
+
+```js title="docusaurus.config.js"
+export default {
+ presets: [
+ [
+ '@docusaurus/preset-classic',
+ {
+ docs: {
+ beforeDefaultRemarkPlugins: [sectionPrefix],
+ },
+ },
+ ],
+ ],
+};
+```
+
+This ensures your transformations (like heading prefixes) are included in generated tables of contents.
\ No newline at end of file
diff --git a/docs/guides/markdown-features/markdown-features-admonitions.mdx b/docs/guides/markdown-features/markdown-features-admonitions.mdx
new file mode 100644
index 000000000..f17881d3a
--- /dev/null
+++ b/docs/guides/markdown-features/markdown-features-admonitions.mdx
@@ -0,0 +1,269 @@
+---
+id: admonitions
+title: Admonitions
+description: Add tips, notes, and warnings to your CodeHarborHub Markdown docs with styled callouts
+slug: /guides/markdown-features/admonitions
+---
+
+Admonitions let you highlight **important information** in your docs using a simple Markdown syntax.
+
+They render as colorful callout boxes like **Tips**, **Notes**, **Warnings**, etc.
+
+
+
+## Basic Syntax
+
+Wrap your text with 3 colons and specify a type:
+
+```md
+:::note
+
+This is a note block with **Markdown** support.
+
+:::
+```
+
+
+
+:::note
+
+This is a note block with **Markdown** support.
+
+:::
+
+
+
+Supported types: `note`, `tip`, `info`, `warning`, `danger`
+
+---
+
+## Examples
+
+```md
+:::tip
+Great for best practices or quick advice.
+:::
+
+:::info
+Use to provide additional context.
+:::
+
+:::warning
+Warn users of potential issues.
+:::
+
+:::danger
+Critical alerts or breaking changes.
+:::
+```
+
+
+
+:::tip
+Great for best practices or quick advice.
+:::
+
+:::info
+Use to provide additional context.
+:::
+
+:::warning
+Warn users of potential issues.
+:::
+
+:::danger
+Critical alerts or breaking changes.
+:::
+
+
+
+
+
+## Adding a Custom Title
+
+You can provide a **custom title** (with Markdown too):
+
+```md
+:::note[Your **Custom** _Title_]
+
+This callout uses a custom title.
+
+:::
+```
+
+
+
+:::note[Your **Custom** _Title_]
+
+This callout uses a custom title.
+
+:::
+
+
+
+
+
+## Nested Admonitions
+
+Admonitions can be nested for layered messages.
+Use more colons `:` for each parent level:
+
+```md
+::::info Outer
+
+Outer content
+
+:::warning Inner
+Inner content
+:::
+
+::::
+```
+
+
+
+::::info Outer
+
+Outer content
+
+:::warning Inner
+Inner content
+:::
+
+::::
+
+
+
+---
+
+## Using MDX Inside
+
+Admonitions fully support **MDX components**.
+
+```mdx
+:::tip[Tabbed Example]
+
+
+ React example 🚀
+ Vue example 🌿
+
+
+:::
+```
+
+
+
+:::tip[Tabbed Example]
+
+
+ React example 🚀
+ Vue example 🌿
+
+
+:::
+
+
+
+
+
+## Using in JSX
+
+Outside Markdown, use the React component directly:
+
+```jsx title="MyPage.jsx"
+import Admonition from '@theme/Admonition';
+
+export default function MyPage() {
+ return (
+
+ You can use Admonitions directly in JSX too!
+
+ );
+}
+```
+
+
+
+ You can use Admonitions directly in JSX too!
+
+
+
+---
+
+## Customizing Admonitions
+
+### Custom Icons or Styling
+
+You can override default icons by **swizzling** the Admonition theme component:
+
+```jsx title="src/theme/Admonition.js"
+import React from 'react';
+import Admonition from '@theme-original/Admonition';
+import MyIcon from '@site/static/img/custom-icon.svg';
+
+export default function AdmonitionWrapper(props) {
+ if (props.type === 'info') {
+ return } {...props} />;
+ }
+ return ;
+}
+```
+
+### Add New Types
+
+Add a new keyword in `docusaurus.config.js`:
+
+```js title="docusaurus.config.js"
+export default {
+ presets: [
+ [
+ 'classic',
+ {
+ docs: {
+ admonitions: {
+ keywords: ['my-callout'],
+ extendDefaults: true,
+ },
+ },
+ },
+ ],
+ ],
+};
+```
+
+Then create a custom renderer:
+
+```jsx title="src/theme/Admonition/Types.js"
+import React from 'react';
+import DefaultTypes from '@theme-original/Admonition/Types';
+
+function MyCallout(props) {
+ return (
+
+
{props.title || '⚡ My Callout'}
+ {props.children}
+
+ );
+}
+
+export default {
+ ...DefaultTypes,
+ 'my-callout': MyCallout,
+};
+```
+
+Now you can use:
+
+```md
+:::my-callout[Custom Callout]
+This is a completely custom admonition.
+:::
+```
+
+
+
+## Best Practices
+
+* Always leave **blank lines** inside admonitions to avoid Prettier formatting issues.
+* Use **icons and concise titles** to improve readability.
+* Keep admonitions focused—avoid stuffing too much content.
\ No newline at end of file
diff --git a/docs/guides/markdown-features/markdown-features-assets.mdx b/docs/guides/markdown-features/markdown-features-assets.mdx
new file mode 100644
index 000000000..fb751b30b
--- /dev/null
+++ b/docs/guides/markdown-features/markdown-features-assets.mdx
@@ -0,0 +1,205 @@
+---
+id: assets
+description: Handling assets in Markdown for CodeHarborHub docs
+slug: /markdown-features/assets
+---
+
+# Assets in Markdown
+
+In CodeHarborHub documentation, you may need to include **images**, **files**, or **SVGs** inside Markdown (`.md` / `.mdx`) files.
+
+Docusaurus provides several ways to handle these assets while keeping everything **organized** and **optimized**.
+
+A common practice is to **co-locate** assets next to the Markdown file that uses them:
+
+```
+/docs/guides/markdown-features/markdown-features-assets.mdx
+/docs/guides/markdown-features/assets/example-banner.png
+/docs/guides/markdown-features/assets/example-file.docx
+```
+
+This keeps docs self-contained and easy to maintain.
+
+
+
+## Images {#images}
+
+You can display images using **three different methods**:
+
+
+
+
+### 1. Simple Markdown Syntax
+
+The easiest way to add an image:
+
+```md
+
+```
+
+This works for most cases and Docusaurus will automatically process the file.
+
+
+
+
+### 2. Using `require()` in JSX
+
+If you need to use JSX for extra control (like `className` or styles):
+
+```jsx
+
+```
+
+
+
+
+### 3. Using ES `import`
+
+Recommended when importing at the top of the file:
+
+```jsx
+import banner from './assets/example-banner.jpg';
+
+;
+```
+
+
+
+
+All three methods display the same image:
+
+
+ 
+
+
+
+
+## Downloadable Files {#files}
+
+You can also link downloadable files (like `.docx`, `.pdf`, `.zip`) directly.
+
+**Markdown link syntax** (recommended):
+
+```md
+[Download the example doc](./assets/example-file.docx)
+```
+
+**JSX with `require()`** (for dynamic attributes):
+
+```jsx
+
+ Download this docx
+
+```
+
+
+[Download the example doc](./example-file.docx)
+
+
+
+
+## Inline SVGs {#inline-svgs}
+
+Docusaurus supports importing **SVGs as React components**.
+This allows you to style or animate parts of the SVG using CSS.
+
+```jsx
+import MyIcon from './assets/logo.svg';
+
+;
+```
+
+For example, you can change the SVG color based on the current theme:
+
+```css
+[data-theme='light'] .customSvg [fill='#000'] {
+ fill: #1e90ff;
+}
+[data-theme='dark'] .customSvg [fill='#000'] {
+ fill: #00fa9a;
+}
+```
+
+
+
+## Themed Images {#themed-images}
+
+For sites that support **light/dark mode**, you may want different images per theme.
+Use the `ThemedImage` component to automatically swap images.
+
+```jsx
+import useBaseUrl from '@docusaurus/useBaseUrl';
+import ThemedImage from '@theme/ThemedImage';
+
+
+```
+
+This ensures the correct image is loaded depending on the current theme.
+
+### GitHub-style Theme Switching
+
+You can also replicate GitHub’s approach using path fragments:
+
+```md
+
+
+```
+
+Add this CSS to hide/show based on theme:
+
+```css title="src/css/custom.css"
+[data-theme='light'] img[src$='#gh-dark-mode-only'],
+[data-theme='dark'] img[src$='#gh-light-mode-only'] {
+ display: none;
+}
+```
+
+
+
+## Static Assets {#static-assets}
+
+If you use **absolute paths** (`/img/...`), Docusaurus treats them as **static assets**.
+
+Example:
+
+```md
+
+```
+
+Docusaurus will look for this image inside the `static/` directory:
+
+```
+/static/img/nav-logo.jpg
+```
+
+Benefits of using static assets:
+
+1. **Automatic Base URL Handling** – works even when deploying to a subpath.
+2. **Cache Optimization** – images are processed by Webpack and get a unique hash for better caching.
+
+If you need a raw URL (without build processing),
+use the `pathname://` protocol:
+
+```md
+
+```
+
+This generates a direct `` tag.
+
+---
+
+## Best Practices {#best-practices}
+
+* Keep assets **close to the docs** that use them for easier maintenance.
+* Prefer **Markdown syntax** for most links/images for cleaner code.
+* Use `ThemedImage` or `inline SVGs` when working with **dark/light mode**.
+* Use **static assets** for site-wide shared files like logos and large downloads.
\ No newline at end of file
diff --git a/docs/guides/markdown-features/markdown-features-code-blocks.mdx b/docs/guides/markdown-features/markdown-features-code-blocks.mdx
new file mode 100644
index 000000000..6ae22e15a
--- /dev/null
+++ b/docs/guides/markdown-features/markdown-features-code-blocks.mdx
@@ -0,0 +1,344 @@
+---
+id: code-blocks
+title: Code Blocks in Markdown
+description: "Learn how to use, style, and supercharge code blocks in CodeHarborHub’s Markdown with syntax highlighting, line numbers, live editing, and more."
+slug: /guides/markdown-features/code-blocks
+---
+
+import CodeBlock from "@theme/CodeBlock";
+
+Code blocks are the **heart of technical documentation**.
+
+In CodeHarborHub (powered by Docusaurus & MDX), code blocks are **super-powered**. You can add syntax highlighting, titles, live editors, and even interactive tabs.
+
+This guide shows you **everything you can do with code blocks**, with real examples.
+
+
+
+## Basic Code Block
+
+Wrap your code with three backticks (\`\`\`) and specify the language for syntax highlighting.
+
+````md
+```js
+console.log("Hello CodeHarborHub!");
+```
+````
+
+
+
+```js
+console.log("Hello CodeHarborHub!");
+```
+
+
+
+✅ **Tip:** Always specify the language (like `js`, `python`, `html`) for better highlighting.
+
+
+
+## Adding a Title
+
+Give your readers context by adding a title to your code block.
+
+````md
+```jsx title="/src/components/Greeting.js"
+export default function Greeting() {
+ return
;
+}
+```
+
+
+
+You can even start counting from a specific number:
+
+````md
+```jsx showLineNumbers=5
+function Example() {
+ return
Starts from 5!
;
+}
+```
+````
+
+
+
+## Live Code Editor
+
+Want readers to experiment directly?
+Turn any code block into a **live playground** using `live`.
+
+Install the plugin first:
+
+```bash npm2yarn
+npm install --save @docusaurus/theme-live-codeblock
+```
+
+Enable it in `docusaurus.config.js`:
+
+```js
+export default {
+ themes: ["@docusaurus/theme-live-codeblock"],
+};
+```
+
+Now create a live block:
+
+````md
+```jsx live
+function Counter() {
+ const [count, setCount] = React.useState(0);
+ return ;
+}
+```
+````
+
+
+
+```jsx live
+function Counter() {
+ const [count, setCount] = React.useState(0);
+ return ;
+}
+```
+
+
+
+**Users can edit the code and see instant results!**
+
+---
+
+## Multi-Language Tabs
+
+Show the same example in multiple languages using `` and ``.
+
+````mdx
+import Tabs from "@theme/Tabs";
+import TabItem from "@theme/TabItem";
+
+
+
+
+```js
+console.log("Hello from JavaScript!");
+```
+
+
+
+
+```python
+print("Hello from Python!")
+```
+
+
+
+````
+
+
+
+
+
+```js
+console.log("Hello from JavaScript!");
+```
+
+
+
+
+```python
+print("Hello from Python!")
+```
+
+
+
+
+
+
+
+## Advanced Tricks
+
+### Custom Magic Comments
+
+Create your own highlight styles.
+
+```js title="docusaurus.config.js"
+export default {
+ themeConfig: {
+ prism: {
+ magicComments: [
+ {
+ className: "code-block-error-line",
+ line: "This will error",
+ },
+ ],
+ },
+ },
+};
+```
+
+Then style it in CSS:
+
+```css title="src/css/custom.css"
+.code-block-error-line {
+ background: #ff000020;
+ border-left: 3px solid #ff000080;
+}
+```
+
+### Interactive Imports
+
+For live blocks, add custom components to the live scope:
+
+```bash npm2yarn
+npm run swizzle @docusaurus/theme-live-codeblock ReactLiveScope -- --eject
+```
+
+Then modify `src/theme/ReactLiveScope/index.js`:
+
+```js
+import React from "react";
+
+const FancyButton = (props) => (
+
+);
+
+export default {
+ React,
+ FancyButton,
+};
+```
+
+Now you can use `` inside your live code block!
+
+
+
+## Best Practices
+
+- **Use comments for highlighting** when code length changes frequently.
+- Always **specify a language** for better syntax highlighting.
+- Combine **line numbers** with highlights for tutorials and step-by-step guides.
+- Keep code blocks **short & focused**. Long blocks reduce readability.
+
+---
+
+### ✅ Summary
+
+| Feature | Syntax Example |
+| --------------- | --------------------------------------------- |
+| Title | ` ```js title="file.js" ` |
+| Line Highlight | ` ```js {1,3-5} ` or `// highlight-next-line` |
+| Line Numbers | ` ```js showLineNumbers ` |
+| Live Editor | ` ```jsx live ` |
+| Multi-Lang Tabs | `` + `` |
+
+
+
+Code blocks are not just **static snippets** they can be **interactive teaching tools**. Use these features to create **engaging, developer-friendly** docs in **CodeHarborHub**.
\ No newline at end of file
diff --git a/docs/guides/markdown-features/markdown-features-diagrams.mdx b/docs/guides/markdown-features/markdown-features-diagrams.mdx
new file mode 100644
index 000000000..5f5f6fe17
--- /dev/null
+++ b/docs/guides/markdown-features/markdown-features-diagrams.mdx
@@ -0,0 +1,156 @@
+---
+id: diagrams
+title: Diagrams
+description: Writing diagrams with Mermaid
+slug: /markdown-features/diagrams
+---
+
+# Diagrams
+
+Visualize your ideas directly inside Markdown using **[Mermaid](https://mermaid-js.github.io/mermaid/)**. Mermaid lets you create flowcharts, sequence diagrams, class diagrams, and more, using a simple text syntax.
+
+
+
+## Installation {#installation}
+
+Install the official Mermaid theme for Docusaurus:
+
+```bash npm2yarn
+npm install --save @docusaurus/theme-mermaid
+```
+
+Then enable Mermaid support by updating your **`docusaurus.config.js`**:
+
+```js title="docusaurus.config.js"
+export default {
+ markdown: {
+ mermaid: true,
+ },
+ themes: ['@docusaurus/theme-mermaid'],
+};
+```
+
+This configuration activates the Markdown engine to recognize `mermaid` code blocks.
+
+
+
+## Usage {#usage}
+
+Create a Mermaid diagram by using a fenced code block with the language set to `mermaid`:
+
+````md title="Example Mermaid diagram"
+```mermaid
+graph TD;
+ A-->B;
+ A-->C;
+ B-->D;
+ C-->D;
+```
+`````
+
+This renders as:
+
+```mermaid
+graph TD;
+ A-->B;
+ A-->C;
+ B-->D;
+ C-->D;
+```
+
+Check the [Mermaid Syntax Reference](https://mermaid-js.github.io/mermaid/#/./n00b-syntaxReference) to explore flowcharts, sequence diagrams, Gantt charts, and more.
+
+
+
+## Theming {#theming}
+
+Customize diagram colors for light and dark mode:
+
+```js title="docusaurus.config.js"
+export default {
+ themeConfig: {
+ mermaid: {
+ theme: { light: 'neutral', dark: 'forest' },
+ },
+ },
+};
+```
+
+Available themes include `default`, `forest`, `neutral`, `dark`, and more. Refer to the [Mermaid Theme Docs](https://mermaid-js.github.io/mermaid/#/theming) for a full list.
+
+
+
+## Mermaid Config {#configuration}
+
+Pass advanced configuration directly to Mermaid:
+
+```js title="docusaurus.config.js"
+export default {
+ themeConfig: {
+ mermaid: {
+ options: {
+ maxTextSize: 50,
+ securityLevel: 'loose',
+ },
+ },
+ },
+};
+```
+
+See the [Mermaid Config Reference](https://mermaid-js.github.io/mermaid/#/./Setup?id=configuration) and [Type Definitions](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/config.type.ts) for all available options.
+
+
+
+## Dynamic Mermaid Component {#component}
+
+For **interactive or programmatically generated diagrams**,
+you can use the `Mermaid` React component inside an `.mdx` file:
+
+```mdx title="Dynamic Mermaid component"
+import Mermaid from '@theme/Mermaid';
+
+Process;
+ Process-->End;`}
+/>
+```
+
+This is useful for rendering diagrams from data or props.
+
+---
+
+## Layout Engines {#layouts}
+
+Mermaid supports different layout engines for arranging nodes:
+
+* **`dagre`** – default engine (no extra dependencies)
+* **`elk`** – advanced layout; install with:
+
+```bash npm2yarn
+npm install --save @mermaid-js/layout-elk
+```
+
+Then specify it inside the code block frontmatter:
+
+````md
+```mermaid
+---
+config:
+ layout: elk
+---
+graph TD;
+ A-->B;
+ B-->C;
+```
+````
+
+```mermaid
+---
+config:
+ layout: elk
+---
+graph TD;
+ A-->B;
+ B-->C;
+```
\ No newline at end of file
diff --git a/docs/guides/markdown-features/markdown-features-head-metadata.mdx b/docs/guides/markdown-features/markdown-features-head-metadata.mdx
new file mode 100644
index 000000000..046e0397f
--- /dev/null
+++ b/docs/guides/markdown-features/markdown-features-head-metadata.mdx
@@ -0,0 +1,101 @@
+---
+id: head-metadata
+description: Declaring page-specific head metadata through MDX
+slug: /markdown-features/head-metadata
+---
+
+# Head Metadata
+
+Docusaurus automatically sets useful metadata inside ``, `` and `` for every page. However, you can **add extra metadata or override defaults** directly inside your Markdown/MDX file
+using the `` tag.
+
+
+
+## Customizing head metadata {#customizing-head-metadata}
+
+To inject custom metadata, simply add a `` declaration at the top of your `.mdx` document:
+
+```md title="markdown-features-head-metadata.mdx"
+---
+id: head-metadata
+title: Head Metadata
+---
+
+
+
+
+
+ Custom Head Metadata for CodeHarborHub!
+
+
+
+
+
+
+# Head Metadata
+
+Your page content goes here…
+```
+
+When rendered, these tags will be merged into the final HTML `` section. You can confirm by inspecting the page with **Browser DevTools**.
+
+```mdx-code-block
+
+
+
+ Custom Head Metadata for CodeHarborHub!
+
+
+
+
+```
+
+:::note
+This feature is powered by the Docusaurus [``](https://docusaurus.io/docs/docusaurus-core#head) component, which internally uses [react-helmet](https://github.com/nfl/react-helmet) for managing the document head.
+:::
+
+:::tip Regular SEO is easier
+For standard SEO tasks (like meta descriptions, keywords, and Open Graph tags),
+prefer **front matter** fields such as `description`, `keywords`, and `image`.
+These fields automatically populate both `description` and `og:description` without
+manually writing multiple `` tags.
+:::
+
+
+
+## Markdown page description {#markdown-page-description}
+
+Each Markdown page has a **description** value that Docusaurus can use in multiple places—like the **generated category index cards** in the docs sidebar.
+
+By default, this description is derived from the first meaningful line of content. For example, the following Markdown:
+
+```md
+# Welcome
+
+Main content… May contain some [links](./file.mdx) or **emphasis**.
+```
+
+will produce a default description like:
+
+> `Main content… May contain some links or emphasis.`
+
+This is a **best effort** conversion.
+If you need a precise description, explicitly set it in the front matter:
+
+```md
+---
+description: A custom description that overrides the default extraction.
+---
+
+# Welcome
+
+Main content… May contain some [links](./file.mdx) or **emphasis**.
+```
+
+
+
+### Why use front matter instead of ``?
+
+* **Portable & versioned**: Works across all docs versions and i18n locales.
+* **Automatic**: Updates Open Graph and social previews without extra tags.
+* **Editor-friendly**: Visible in the same YAML section as other metadata.
\ No newline at end of file
diff --git a/docs/guides/markdown-features/markdown-features-links.mdx b/docs/guides/markdown-features/markdown-features-links.mdx
new file mode 100644
index 000000000..0e125e51a
--- /dev/null
+++ b/docs/guides/markdown-features/markdown-features-links.mdx
@@ -0,0 +1,96 @@
+---
+id: links
+description: How to add and manage links in Markdown on CodeHarborHub
+slug: /markdown-features/links
+---
+
+# Markdown Links
+
+In CodeHarborHub, Markdown supports flexible ways of linking between documents, tutorials, and resources.
+
+There are two main approaches:
+
+- Using a **URL path**
+- Using a **file path**
+
+```md
+- [URL path to another document](../../installation)
+- [file path to another document](../../installation.mdx)
+```
+
+
+
+## URL Path Links
+
+URL paths are unprocessed by Docusaurus. They render directly to HTML, like:
+
+```html
+Link
+```
+
+This means they resolve according to the page's **URL location**, not the file system path.
+
+## File Path Links
+
+When you want to reference another Markdown file managed by the same plugin, use the relative **file path**.
+Docusaurus will convert the file path into the correct URL path, removing `.md` or `.mdx` extensions automatically.
+
+For example, if your file structure is:
+
+```
+docs/folder/doc1.md
+docs/folder/doc2.mdx
+docs/folder/subfolder/doc3.mdx
+docs/otherFolder/doc4.mdx
+```
+
+From `doc1.md`, you can write:
+
+```md title="docs/folder/doc1.md"
+I am referencing a [document](doc2.mdx).
+
+Reference to another [document in a subfolder](subfolder/doc3.mdx).
+
+[Relative document](../otherFolder/doc4.mdx) referencing works as well.
+```
+
+### How File Paths Resolve
+
+Assume the current file is `website/docs/category/source.mdx`:
+
+- `[link](./target.mdx)` → resolves from `website/docs/category`
+- `[link](../target.mdx)` → resolves from `website/docs`
+- `[link](/target.mdx)` → resolves from the docs content root (`website/docs`)
+- `[link](target.mdx)` → checked in `website/docs/category`, then `docs` root, then site root
+
+### Absolute File Paths
+
+You can also reference the site directory, but be careful:
+
+- `[link](/docs/target.mdx)` → resolved from site root `website` (⚠️ less portable)
+- `[link](@site/docs/target.mdx)` → relative to site root `website` (⚠️ less portable)
+
+
+
+## Benefits of File Path Links
+
+Using relative **file paths** instead of raw URL links provides key benefits:
+
+* Links work directly on GitHub and Markdown editors
+* You can change a doc's slug without breaking links
+* Editors can track file movements and update links automatically
+* Versioned docs always link to the correct version
+* Resistant to config changes (like `trailingSlash`)
+
+## Limitation
+
+:::warning
+Markdown file references only work if the **source and target files are managed by the same plugin**.
+For example, linking a doc from a blog post requires **URL links**, not file paths.
+:::
+
+## Next Steps
+
+- Learn more about [versioned docs](../docs/versioning.mdx)
+- Explore the [`trailingSlash` config](https://docusaurus.io/docs/api/docusaurus-config#trailingSlash)
+- Visit [Docusaurus Markdown docs](https://docusaurus.io/docs/markdown-features) for advanced linking techniques
\ No newline at end of file
diff --git a/docs/guides/markdown-features/markdown-features-math-equations.mdx b/docs/guides/markdown-features/markdown-features-math-equations.mdx
new file mode 100644
index 000000000..7cea3db57
--- /dev/null
+++ b/docs/guides/markdown-features/markdown-features-math-equations.mdx
@@ -0,0 +1,201 @@
+---
+id: math-equations
+description: Writing LaTeX Math Equations in CodeHarborHub Docs
+slug: /markdown-features/math-equations
+---
+
+# Math Equations
+
+CodeHarborHub documentation supports mathematical equations using [KaTeX](https://katex.org). KaTeX allows you to write LaTeX-style math directly inside Markdown files for clean, professional rendering.
+
+See [configuration](#configuration) to enable this feature.
+
+
+
+## Usage {#usage}
+
+Please read the [KaTeX](https://katex.org) documentation for detailed syntax. Below are the most common use-cases.
+
+### Inline Equations {#inline}
+
+For inline math, wrap the LaTeX expression in **single dollar signs**:
+
+```latex
+Let $f\colon[a,b]\to\R$ be Riemann integrable.
+Let $F\colon[a,b]\to\R$ be $F(x)=\int_{a}^{x} f(t)\,dt$.
+Then $F$ is continuous, and where $f$ is continuous, $F'(x)=f(x)$.
+```
+
+
+
+Let $f\colon[a,b]\to\R$ be Riemann integrable.
+Let $F\colon[a,b]\to\R$ be $F(x)=\int_{a}^{x} f(t)\,dt$.
+Then $F$ is continuous, and where $f$ is continuous, $F'(x)=f(x)$.
+
+
+
+### Block Equations {#blocks}
+
+For display-mode equations, use **double dollar signs** on separate lines:
+
+```latex
+$$
+I = \int_0^{2\pi} \sin(x)\,dx
+$$
+```
+
+
+
+$$
+I = \int_0^{2\pi} \sin(x)\,dx
+$$
+
+
+
+
+
+## Enabling Math Equations {#configuration}
+
+To render equations, install and configure the required plugins.
+
+### 1. Install Plugins
+
+Use the latest KaTeX-compatible versions:
+
+```bash npm2yarn
+npm install --save remark-math@6 rehype-katex@7
+```
+
+:::warning
+For **Docusaurus v3 (MDX v3)**, use `remark-math@6` and `rehype-katex@7`. Other versions may not work properly.
+:::
+
+### 2. Configure `docusaurus.config.js`
+
+These plugins are **ES Modules only**, so we recommend using an ESM config file:
+
+```js title="docusaurus.config.js (ESM)"
+// highlight-start
+import remarkMath from 'remark-math';
+import rehypeKatex from 'rehype-katex';
+// highlight-end
+
+export default {
+ presets: [
+ [
+ '@docusaurus/preset-classic',
+ {
+ docs: {
+ path: 'docs',
+ // highlight-start
+ remarkPlugins: [remarkMath],
+ rehypePlugins: [rehypeKatex],
+ // highlight-end
+ },
+ },
+ ],
+ ],
+};
+```
+
+
+Using CommonJS?
+
+You can dynamically import ES modules with an async config:
+
+```js title="docusaurus.config.js (CommonJS)"
+module.exports = async function createConfigAsync() {
+ return {
+ presets: [
+ [
+ '@docusaurus/preset-classic',
+ {
+ docs: {
+ path: 'docs',
+ // highlight-start
+ remarkPlugins: [(await import('remark-math')).default],
+ rehypePlugins: [(await import('rehype-katex')).default],
+ // highlight-end
+ },
+ },
+ ],
+ ],
+ };
+};
+```
+
+
+### 3. Add KaTeX Stylesheet
+
+Include the KaTeX CSS for proper rendering:
+
+```js title="docusaurus.config.js"
+export default {
+ // ...
+ stylesheets: [
+ {
+ href: 'https://cdn.jsdelivr.net/npm/katex@0.13.24/dist/katex.min.css',
+ type: 'text/css',
+ integrity:
+ 'sha384-odtC+0UGzzFL/6PNoE8rX/SPcQDXBJ+uRepguP4QkPCm2LBxH3FA3y+fKSiJ+AmM',
+ crossorigin: 'anonymous',
+ },
+ ],
+};
+```
+
+
+Complete Example
+
+```js title="docusaurus.config.js"
+import remarkMath from 'remark-math';
+import rehypeKatex from 'rehype-katex';
+
+export default {
+ title: 'CodeHarborHub',
+ tagline: 'Empowering Developers to Learn & Build',
+ presets: [
+ [
+ '@docusaurus/preset-classic',
+ {
+ docs: {
+ path: 'docs',
+ remarkPlugins: [remarkMath],
+ rehypePlugins: [rehypeKatex],
+ },
+ },
+ ],
+ ],
+ stylesheets: [
+ {
+ href: 'https://cdn.jsdelivr.net/npm/katex@0.13.24/dist/katex.min.css',
+ type: 'text/css',
+ integrity:
+ 'sha384-odtC+0UGzzFL/6PNoE8rX/SPcQDXBJ+uRepguP4QkPCm2LBxH3FA3y+fKSiJ+AmM',
+ crossorigin: 'anonymous',
+ },
+ ],
+};
+```
+
+
+
+
+## Self-Hosting KaTeX Assets {#self-hosting}
+
+For maximum control or offline support, you can self-host KaTeX:
+
+1. Download the latest [KaTeX release](https://github.com/KaTeX/KaTeX/releases).
+2. Copy `katex.min.css` and the required `fonts` (usually `.woff2` is sufficient) into your site’s `static` directory.
+3. Update the stylesheet path in `docusaurus.config.js`:
+
+```js title="docusaurus.config.js"
+export default {
+ stylesheets: [
+ {
+ href: '/katex/katex.min.css',
+ type: 'text/css',
+ },
+ ],
+};
+```
diff --git a/docs/guides/markdown-features/markdown-features-toc.mdx b/docs/guides/markdown-features/markdown-features-toc.mdx
new file mode 100644
index 000000000..f94b7a455
--- /dev/null
+++ b/docs/guides/markdown-features/markdown-features-toc.mdx
@@ -0,0 +1,195 @@
+---
+id: toc
+title: Headings & Table of Contents
+description: "Learn how to use headings, control their IDs, and customize the Table of Contents (TOC) in Markdown for CodeHarborHub docs."
+slug: /guides/markdown-features/toc
+---
+
+Headings give structure to your content, and the **Table of Contents (TOC)** helps readers navigate easily.
+
+This guide explains:
+* How to create Markdown headings
+* How to set custom IDs for deep links
+* How to customize TOC levels (globally & per page)
+* How to embed an **inline TOC** directly inside a page
+
+
+
+## Writing Headings {#markdown-headings}
+
+Use standard Markdown syntax:
+
+```md
+## Level 2 Title
+### Level 3 Title
+#### Level 4 Title
+```
+
+Each heading **automatically appears** in the sidebar and TOC.
+
+
+
+## Level 2 Title
+
+### Level 3 Title
+
+#### Level 4 Title
+
+
+
+
+
+## Heading IDs {#heading-ids}
+
+Every heading gets a **unique ID** so you can link directly to it.
+
+```md
+[Jump to Section](#level-2-title)
+```
+
+```jsx
+import Link from '@docusaurus/Link';
+
+Jump to Section
+```
+
+### Explicit IDs
+
+Generated IDs follow the heading text (e.g. `### Hello World` → `hello-world`).
+To lock an ID (useful for translations or renames), specify it manually:
+
+```md
+### Hello World {#my-explicit-id}
+```
+
+✅ Now the link will always be `#my-explicit-id`, even if the text changes.
+
+:::warning Avoid Duplicate IDs
+Custom IDs must be **unique per page**.
+Duplicate IDs break anchor links and create invalid HTML.
+:::
+
+
+
+## TOC Levels {#table-of-contents-heading-level}
+
+By default, the TOC shows only **H2** and **H3** headings.
+
+### Per Page
+
+Set the range with front matter:
+
+```md title="myDoc.md"
+---
+toc_min_heading_level: 2
+toc_max_heading_level: 5
+---
+```
+
+### Globally
+
+Change defaults in `docusaurus.config.js`:
+
+```js title="docusaurus.config.js"
+export default {
+ themeConfig: {
+ tableOfContents: {
+ minHeadingLevel: 2,
+ maxHeadingLevel: 5,
+ },
+ },
+};
+```
+
+Global settings can be **overridden per page** using front matter.
+
+
+
+## Inline Table of Contents {#inline-table-of-contents}
+
+You can insert a **TOC inside the page body** using the `toc` variable:
+
+```mdx
+import TOCInline from '@theme/TOCInline';
+
+
+```
+
+
+
+
+
+`toc` is a flat list of headings:
+
+```ts
+declare const toc: {
+ value: string; // Heading text
+ id: string; // Anchor link
+ level: number; // Heading level (2–6)
+}[];
+```
+
+### Filter or Customize
+
+You can filter the array before rendering:
+
+```mdx
+ node.level === 2 || node.level === 4)}
+ minHeadingLevel={2}
+ maxHeadingLevel={4}
+/>
+```
+
+This example displays only **H2** and **H4** headings.
+
+---
+
+## Advanced Tips {#customizing-table-of-contents-generation}
+
+* Headings inside **Tabs** or `` still appear in the TOC.
+* Headings added with raw HTML (`
`) **will not** appear in the TOC.
+* For complex use cases (ignoring certain headings, injecting custom ones),
+ watch [this issue](https://github.com/facebook/docusaurus/issues/6201).
+
+Example of hiding headings:
+
+```md
+
+Expandable
+
This heading won't show in the TOC
+
+```
+
+
+
+## Best Practices
+
+| Tip | Why it matters |
+| ------------------------------------------------ | ----------------------------------------- |
+| Always specify explicit IDs for critical anchors | Keeps links stable if you rename headings |
+| Limit TOC depth to 3–4 levels | Improves readability |
+| Use inline TOC on long pages | Gives readers quick context |
+| Keep headings descriptive | Helps SEO & accessibility |
+
+---
+
+## Demo Content for TOC
+
+Below are sample sections to test TOC rendering:
+
+### Section A {#section-a}
+
+Lorem ipsum dolor sit amet.
+
+#### Subsection A1
+
+Quick brown fox.
+
+### Section B {#section-b}
+
+Jumped over the lazy dog.
+
+#### Subsection B1
+
+Contributors can play with TOC filters here.
\ No newline at end of file
diff --git a/sidebars.js b/sidebars.js
index f7f2a354c..367c6aff9 100644
--- a/sidebars.js
+++ b/sidebars.js
@@ -69,6 +69,15 @@ const sidebars = {
items: [
"guides/markdown-features/react",
"guides/markdown-features/tabs",
+ "guides/markdown-features/code-blocks",
+ "guides/markdown-features/admonitions",
+ "guides/markdown-features/toc",
+ "guides/markdown-features/assets",
+ "guides/markdown-features/links",
+ "guides/markdown-features/plugins",
+ "guides/markdown-features/math-equations",
+ "guides/markdown-features/diagrams",
+ "guides/markdown-features/head-metadata",
],
},
"styling-layout",
diff --git a/src/theme/MDXComponents.js b/src/theme/MDXComponents.js
index 350d23183..013995ddd 100644
--- a/src/theme/MDXComponents.js
+++ b/src/theme/MDXComponents.js
@@ -26,6 +26,8 @@ import Tabs from "@theme/Tabs";
import { FaReact } from "react-icons/fa";
import LiteYouTubeEmbed from "react-lite-youtube-embed";
import Comming from "@site/src/components/Comming";
+import Admonition from '@theme/Admonition';
+import TOCInline from '@theme/TOCInline';
export default {
// Re-use the default mapping
@@ -56,4 +58,6 @@ export default {
LinearSearchVisualizer,
AdsComponent,
Comming,
+ Admonition,
+ TOCInline,
};