Skip to content

Latest commit

ย 

History

History
962 lines (662 loc) ยท 22.7 KB

File metadata and controls

962 lines (662 loc) ยท 22.7 KB

่ดก็ŒฎๆŒ‡ๅ—/Contributing Guide

๐Ÿš€ ๅผ€ๅ‘็Žฏๅขƒ

1. ๅ…‹้š†ไป“ๅบ“

git clone https://github.com/involutionhell/involutionhell.github.io.git
cd involutionhell.github.io

2. ๅฎ‰่ฃ…ไพ่ต–

ๆˆ‘ไปฌไฝฟ็”จ pnpm ไฝœไธบๅŒ…็ฎก็†ๅทฅๅ…ท๏ผš

pnpm install

ๅฆ‚ๆžœไฝ ่ฟ˜ๆฒกๆœ‰ๅฎ‰่ฃ… pnpm๏ผš

npm install -g pnpm

3. ๆœฌๅœฐๅผ€ๅ‘

่ฟ่กŒๅผ€ๅ‘ๆœๅŠกๅ™จ๏ผš

pnpm dev

ๆ‰“ๅผ€ๆต่งˆๅ™จ่ฎฟ้—ฎ http://localhost:3000ใ€‚

ไฟฎๆ”น docs/ ไธ‹็š„ .md ๆˆ– .mdx ๆ–‡ไปถ๏ผŒไผš่‡ชๅŠจ็ƒญๆ›ดๆ–ฐใ€‚


๐Ÿ“š ๆ–‡ๆกฃ่ง„่Œƒ

ๆ‰€ๆœ‰ๆ–‡ๆกฃๆ”พๅœจ docs/ ็›ฎๅฝ•ใ€‚ ๆฏไธชๆ–‡ๆกฃ้ƒฝ้œ€่ฆไธ€ไธช Frontmatter๏ผŒไพ‹ๅฆ‚๏ผš

---
title: Hello World
description: ็ฎ€็Ÿญๆ่ฟฐ
date: "2025-09-11"
tags:
  - intro
---

# Hello World

่ฟ™ๆ˜ฏๆญฃๆ–‡ๅ†…ๅฎนใ€‚

ๅฟ…ๅกซๅญ—ๆฎต:

  • title: ๅฟ…ๅกซ๏ผŒๆ–‡ๆกฃๆ ‡้ข˜

ๅฏ้€‰ๅญ—ๆฎต:

  • description: ็ฎ€็Ÿญ่ฏดๆ˜Ž
  • date: ๅ‘ๅธƒๆ—ฅๆœŸ
  • tags: ๆ ‡็ญพๅˆ—่กจ

๐Ÿ“ ็›ฎๅฝ•็ป“ๆž„

ๆˆ‘ไปฌ็š„ๆ–‡ๆกฃ้‡‡็”จๅˆ†ๅฑ‚ๅผ็š„ "Folder as a Book" ็ป“ๆž„๏ผŒไผš่‡ชๅŠจ็”Ÿๆˆ URL ๅ’Œๅฏผ่ˆชใ€‚

ๅฝ“ๅ‰็ป“ๆž„

๐Ÿ“‚ docs/
โ”œโ”€โ”€ ๐Ÿ“‚ computer-science/           # ่ฎก็ฎ—ๆœบ็ง‘ๅญฆ
โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ index.mdx               # ๆฆ‚่ฟฐ
โ”‚   โ””โ”€โ”€ ๐Ÿ“‚ data-structures/        # ๆ•ฐๆฎ็ป“ๆž„
โ”‚       โ”œโ”€โ”€ ๐Ÿ“„ index.mdx           # ๆฆ‚่ฟฐ
โ”‚       โ”œโ”€โ”€ ๐Ÿ“‚ array/              # ๆ•ฐ็ป„
โ”‚       โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ index.mdx       # ๆฆ‚่ฟฐ
โ”‚       โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ 01-static-array.mdx    # ้™ๆ€ๆ•ฐ็ป„
โ”‚       โ”‚   โ””โ”€โ”€ ๐Ÿ“„ 02-dynamic-array.mdx   # ๅŠจๆ€ๆ•ฐ็ป„
โ”‚       โ””โ”€โ”€ ๐Ÿ“‚ linked-list/        # ้“พ่กจ
โ”‚           โ”œโ”€โ”€ ๐Ÿ“„ index.mdx       # ๆฆ‚่ฟฐ
โ”‚           โ””โ”€โ”€ ๐Ÿ“„ 01-singly-linked-list.mdx  # ๅ•ๅ‘้“พ่กจ

URL ็”Ÿๆˆ

ๆ–‡ไปถ็ป“ๆž„ไผš่‡ชๅŠจ็”Ÿๆˆ็ฎ€ๆด็š„ URL๏ผš

  • docs/computer-science/index.mdx โ†’ /computer-science
  • docs/computer-science/data-structures/array/01-static-array.mdx โ†’ /computer-science/data-structures/array/static-array

ๅ‘ฝๅ็บฆๅฎš

ๆ–‡ไปถๅคน:

  • ไฝฟ็”จ kebab-case ๅ‘ฝๅ: computer-science, data-structures
  • ๆฏไธชไธป้ข˜ๆ–‡ไปถๅคนๅบ”่ฏฅๆœ‰ไธ€ไธช index.mdx ๆ–‡ไปถไฝœไธบๆฆ‚่ฟฐ

ๆ–‡ไปถ:

  • ไฝฟ็”จ kebab-case ๅ‘ฝๅ: static-array.mdx
  • ไฝฟ็”จๆ•ฐๅญ—ๅ‰็ผ€ๆŽ’ๅบ: 01-, 02-
  • ๅ‰็ผ€ไผš่‡ชๅŠจไปŽๆœ€็ปˆ URL ไธญ็งป้™ค

โœ๏ธ ๆทปๅŠ ๆ–ฐๆ–‡็ซ 

ๆญฅ้ชค1๏ผš้€‰ๆ‹ฉไฝ็ฝฎ

็กฎๅฎšไฝ ็š„ๆ–‡็ซ ๅœจ็Žฐๆœ‰็ป“ๆž„ไธญ็š„ไฝ็ฝฎ๏ผš

# ็คบไพ‹๏ผšๆทปๅŠ ๆ–ฐ็š„ๆ•ฐๆฎ็ป“ๆž„ไธป้ข˜
docs/computer-science/data-structures/new-topic/

# ็คบไพ‹๏ผšไธบ็Žฐๆœ‰ไธป้ข˜ๆทปๅŠ ๆ–‡็ซ 
docs/computer-science/data-structures/array/03-new-array-type.mdx

ๆญฅ้ชค2๏ผšๅˆ›ๅปบๆ–‡ไปถ

ๅˆ›ๅปบๆ–ฐ็š„ .mdx ๆ–‡ไปถ๏ผŒๅนถๅŒ…ๅซๆญฃ็กฎ็š„ Frontmatter๏ผš

# ๅฆ‚้œ€่ฆๅˆ›ๅปบ็›ฎๅฝ•
mkdir -p docs/computer-science/data-structures/new-topic

# ๅˆ›ๅปบๆ–‡ไปถ
touch docs/computer-science/data-structures/new-topic/index.mdx

ๆญฅ้ชค3๏ผš็ผ–ๅ†™ๅ†…ๅฎน

ไฝฟ็”จ Markdown/MDX ็ผ–ๅ†™ๆ–‡็ซ ๏ผš

---
title: "ๆ–‡็ซ ๆ ‡้ข˜"
description: "ๆ–‡็ซ ็ฎ€็Ÿญๆ่ฟฐ"
date: "2024-01-15"
tags:
  - your-topic
  - another-tag
---

# ๆ–‡็ซ ๆ ‡้ข˜

## ๅผ•่จ€

่ฟ™้‡Œๆ˜ฏๅ†…ๅฎน...

## ็ฌฌไธ€่Š‚

ๆ›ดๅคšๅ†…ๅฎน...

## ไปฃ็ ็คบไพ‹

```javascript
// ไฝ ็š„ไปฃ็ 
function example() {
    return "Hello World!";
}

ๆ€ป็ป“

ๆ–‡็ซ ๆ€ป็ป“...


### ๆญฅ้ชค4๏ผšๆต‹่ฏ•ไฟฎๆ”น

ไฝฟ็”จ Fumadocs ้ชŒ่ฏๅ†…ๅฎน๏ผš

```bash
pnpm build

ๆญคๅ‘ฝไปคๅฐ†๏ผš

  • ้ชŒ่ฏ Frontmatter ่ฏญๆณ•
  • ๆฃ€ๆŸฅ MDX ้”™่ฏฏ
  • ็”Ÿๆˆ้ข„่งˆๅ†…ๅฎน

ๆญฅ้ชค5๏ผšๆœฌๅœฐ้ข„่งˆ

ๅฏๅŠจๅผ€ๅ‘ๆœๅŠกๅ™จๅนถ้ข„่งˆไฟฎๆ”น๏ผš

pnpm dev

่ฎฟ้—ฎ http://localhost:3000 ๆŸฅ็œ‹ๆ–ฐๅ†…ๅฎนใ€‚

ๆญฅ้ชค6๏ผšๆไบค PR

  1. ๆไบคไฟฎๆ”น๏ผš

    git add .
    git commit -m "Add: New article about [topic]"
  2. ๆŽจ้€ๅˆฐไฝ ็š„ fork๏ผš

    git push origin feat/your-article
  3. ๅˆ›ๅปบ Pull Request


๐Ÿ“ ๅ†™ไฝœๆŒ‡ๅ—

ๅ†…ๅฎน่ดจ้‡

  • ๅ‡†็กฎๆ€ง๏ผš็กฎไฟๆŠ€ๆœฏๅ‡†็กฎๆ€ง
  • ๆธ…ๆ™ฐๆ€ง๏ผš็ผ–ๅ†™ๆธ…ๆ™ฐๆ˜“ๆ‡‚็š„่งฃ้‡Š
  • ๅฎŒๆ•ดๆ€ง๏ผšๅ…จ้ข่ฆ†็›–ไธป้ข˜
  • ็คบไพ‹๏ผšๅŒ…ๅซๅฎž้™…ไปฃ็ ็คบไพ‹
  • ๆ›ดๆ–ฐ๏ผšไฟๆŒๅ†…ๅฎนๆ›ดๆ–ฐ

Markdown ๆœ€ไฝณๅฎž่ทต

  • ไฝฟ็”จๆญฃ็กฎ็š„ๆ ‡้ข˜ๅฑ‚ๆฌก็ป“ๆž„ (h1 โ†’ h2 โ†’ h3)
  • ๅŒ…ๅซๅธฆๆœ‰่ฏญๆณ•้ซ˜ไบฎ็š„ไปฃ็ ๅ—
  • ไฝฟ็”จ่กจๆ ผ่ฟ›่กŒๆฏ”่พƒ
  • ไธบๅ›พ็‰‡ๆทปๅŠ ๆ›ฟไปฃๆ–‡ๆœฌ
  • ไฝฟ็”จ้“พๆŽฅๅผ•็”จ็›ธๅ…ณๅ†…ๅฎน

ไปฃ็ ็คบไพ‹

// โœ… ๅฅฝ็š„ๅšๆณ•๏ผšๆธ…ๆ™ฐใ€ๆœ‰ๆณจ้‡Š็š„ไปฃ็ 
function binarySearch(arr, target) {
    let left = 0;
    let right = arr.length - 1;

    while (left <= right) {
        const mid = Math.floor((left + right) / 2);

        if (arr[mid] === target) {
            return mid; // ๆ‰พๅˆฐ็›ฎๆ ‡
        } else if (arr[mid] < target) {
            left = mid + 1; // ๆœ็ดขๅณๅŠ้ƒจๅˆ†
        } else {
            right = mid - 1; // ๆœ็ดขๅทฆๅŠ้ƒจๅˆ†
        }
    }

    return -1; // ๆœชๆ‰พๅˆฐ็›ฎๆ ‡
}

่ฏญ่จ€้ฃŽๆ ผ

  • ่‹ฑๆ–‡๏ผšไฝฟ็”จๆธ…ๆ™ฐใ€ไธ“ไธš็š„่‹ฑๆ–‡
  • ไธญๆ–‡๏ผšๅœจ้œ€่ฆๆ—ถไฝฟ็”จๆญฃๅผ็š„ๅญฆๆœฏไธญๆ–‡
  • ๆŠ€ๆœฏๆœฏ่ฏญ๏ผšไฝฟ็”จๆ ‡ๅ‡†ๆŠ€ๆœฏๆœฏ่ฏญ
  • ไธ€่‡ดๆ€ง๏ผšๅœจๆ•ดไธชๆ–‡ๆกฃไธญไฟๆŒไธ€่‡ด็š„ๆœฏ่ฏญ

๐Ÿ—๏ธ ๆž„ๅปบไธŽๅฏผๅ‡บ

ๆž„ๅปบ๏ผˆ็”Ÿๆˆ .next๏ผ‰

pnpm build

่ฟ™ไผšๅœจ .next ๆ–‡ไปถๅคนไธญๅˆ›ๅปบไผ˜ๅŒ–็š„็”Ÿไบงๆž„ๅปบใ€‚

้™ๆ€ๅฏผๅ‡บ๏ผˆ็”Ÿๆˆ /out ็›ฎๅฝ•๏ผ‰

pnpm export

ๅฏผๅ‡บๅŽ็š„ /out ็›ฎๅฝ•ๅŒ…ๅซ้™ๆ€็ซ™็‚น๏ผŒๅฏ็›ดๆŽฅ้ƒจ็ฝฒๅˆฐ GitHub Pagesใ€‚


๐Ÿšข ้ƒจ็ฝฒ

ๆœฌไป“ๅบ“้…็ฝฎไบ† GitHub Actions๏ผŒpush ๅˆฐ main ๅˆ†ๆ”ฏไผš่‡ชๅŠจๆž„ๅปบๅนถ้ƒจ็ฝฒๅˆฐ๏ผš

๐Ÿ‘‰ https://involutionhell.github.io/

ๆ— ้œ€ๆ‰‹ๅŠจๆ“ไฝœใ€‚


๐Ÿ“‹ ๅผ€ๅ‘ๆต็จ‹

๐Ÿ”„ ๅŠŸ่ƒฝๅผ€ๅ‘ๅ‰่ฏทๅ…ˆๆ Issue

้‡่ฆๆ้†’๏ผšๅœจๅผ€ๅง‹ไปปไฝ•ๅŠŸ่ƒฝๅผ€ๅ‘ไน‹ๅ‰๏ผŒ่ฏทๅ…ˆๅœจ GitHub Issues ไธญๅˆ›ๅปบๆˆ–ๆŸฅๆ‰พ็›ธๅ…ณ issueใ€‚่ฟ™ๆœ‰ๅŠฉไบŽ๏ผš

  • ้ฟๅ…้‡ๅคๅผ€ๅ‘๏ผš็กฎไฟไธไผšไธŽไป–ไบบๆญฃๅœจ่ฟ›่กŒ็š„ๅผ€ๅ‘ๅ†ฒ็ช
  • ็ปŸไธ€ๅผ€ๅ‘ๆ–นๅ‘๏ผš้€š่ฟ‡่ฎจ่ฎบ็กฎๅฎšๅŠŸ่ƒฝ็š„ๅ…ทไฝ“้œ€ๆฑ‚ๅ’Œๅฎž็Žฐๆ–นๆกˆ
  • ้€ๆ˜Žๅผ€ๅ‘่ฟ›ๅบฆ๏ผš่ฎฉ็คพๅŒบไบ†่งฃ้กน็›ฎๅฝ“ๅ‰ๅผ€ๅ‘็Šถๆ€
  • ไพฟไบŽๅไฝœ๏ผšๅ…ถไป–่ดก็Œฎ่€…ๅฏไปฅๅ‚ไธŽ่ฎจ่ฎบๅ’Œๆไพ›ๅปบ่ฎฎ

ๅˆ›ๅปบ Issue ็š„ๆœ€ไฝณๅฎž่ทต

  1. ๆฃ€ๆŸฅ็Žฐๆœ‰ Issue๏ผšๅ…ˆๆœ็ดขๆ˜ฏๅฆๅทฒๆœ‰็›ธๅ…ณ issue๏ผŒ้ฟๅ…้‡ๅคๅˆ›ๅปบ
  2. ๆธ…ๆ™ฐๆ่ฟฐ๏ผš่ฏฆ็ป†่ฏดๆ˜ŽๅŠŸ่ƒฝ้œ€ๆฑ‚ใ€้ข„ๆœŸๆ•ˆๆžœๅ’Œไฝฟ็”จๅœบๆ™ฏ
  3. ๆทปๅŠ ๆ ‡็ญพ๏ผšไฝฟ็”จๅˆ้€‚็š„ๆ ‡็ญพ๏ผˆๅฆ‚ enhancement, feature, discussion๏ผ‰
  4. ๅ…ณ่”ๅผ€ๅ‘ๅˆ†ๆ”ฏ๏ผšๅฆ‚ๆžœๅผ€ๅง‹ๅผ€ๅ‘๏ผŒ่ฏทๅœจ issue ไธญ้“พๆŽฅไฝ ็š„ๅผ€ๅ‘ๅˆ†ๆ”ฏ

Issue ็ฑปๅž‹ๅปบ่ฎฎ

  • ๅŠŸ่ƒฝ่ฏทๆฑ‚ (feature): ๆ–ฐๅŠŸ่ƒฝ้œ€ๆฑ‚
  • ๆ”น่ฟ›ๅปบ่ฎฎ (enhancement): ็Žฐๆœ‰ๅŠŸ่ƒฝ็š„ๆ”น่ฟ›
  • ้—ฎ้ข˜ๅ้ฆˆ (bug): ๅ‘็Žฐ็š„bugๆˆ–้—ฎ้ข˜
  • ่ฎจ่ฎบ่ฏ้ข˜ (discussion): ้œ€่ฆ็คพๅŒบ่ฎจ่ฎบ็š„่ฏ้ข˜

๐Ÿค ๅฆ‚ไฝ•่ดก็Œฎ

ๅŸบๆœฌๅทฅไฝœๆต็จ‹

  1. Fork ๆœฌไป“ๅบ“
  2. ไธบไฟฎๆ”นๅˆ›ๅปบๆ–ฐๅˆ†ๆ”ฏ
  3. ่ฟ›่กŒไฟฎๆ”น
  4. ๆต‹่ฏ•ไฟฎๆ”น
  5. ๆไบค PR

่ดก็Œฎ็ฑปๅž‹

ๆˆ‘ไปฌๆฌข่ฟŽไปฅไธ‹็ฑปๅž‹็š„่ดก็Œฎ๏ผš

๐Ÿ“ ๅ†…ๅฎน่ดก็Œฎ

  • ไฟฎๆญฃๆ–‡ๆกฃๅ†…ๅฎน
  • ๆทปๅŠ ๆ–ฐ็š„ๆ•™็จ‹ๆˆ–ๆŒ‡ๅ—
  • ๅฐ†ๅ†…ๅฎน็ฟป่ฏ‘ๆˆๅ…ถไป–่ฏญ่จ€
  • ๆ”น่ฟ›็Žฐๆœ‰ๆ–‡็ซ 

๐Ÿ› ้”™่ฏฏไฟฎๅค

  • ไฟฎๅคๆ‹ผๅ†™ๅ’Œ่ฏญๆณ•้”™่ฏฏ
  • ไฟฎๅคๆŸๅ็š„้“พๆŽฅ
  • ไฟฎๅค้”™่ฏฏไฟกๆฏ
  • ๆ”น่ฟ›ไปฃ็ ็คบไพ‹

๐ŸŽจ UI/UX ๆ”น่ฟ›

  • ๆ”น่ฟ›้กต้ขๆ ทๅผ
  • ๅขžๅผบ็”จๆˆทไบคไบ’
  • ๆ”น่ฟ›็งปๅŠจ็ซฏๅ“ๅบ”ๆ€ง
  • ไธบ UI ๆทปๅŠ ๆ–ฐๅŠŸ่ƒฝ

๐Ÿ’ก UI ๅผ€ๅ‘ๅปบ่ฎฎ

ไผ˜ๅ…ˆไฝฟ็”จ Fumadocs UI ็ป„ไปถๅบ“๏ผš

ๆœฌ้กน็›ฎๅทฒ่ฟ็งปๅˆฐ Fumadocs UI ไฝœไธบไธป่ฆ UI ๆก†ๆžถใ€‚่ฏทๅœจ่ฟ›่กŒ UI ็›ธๅ…ณๅผ€ๅ‘ๆ—ถไผ˜ๅ…ˆ่€ƒ่™‘๏ผš

  1. ไฝฟ็”จ Fumadocs UI ็ป„ไปถ๏ผš

    • ๆŸฅ็œ‹ Fumadocs UI ๆ–‡ๆกฃ ไบ†่งฃๅฏ็”จ็ป„ไปถ
    • ไผ˜ๅ…ˆไฝฟ็”จๅ†…็ฝฎ็ป„ไปถ่€Œไธๆ˜ฏ่‡ชๅฎšไน‰ๅฎž็Žฐ
    • ้ตๅพช Fumadocs UI ็š„่ฎพ่ฎก่ง„่Œƒๅ’Œๆ ทๅผๆŒ‡ๅ—
  2. ไฟๆŒ่ฎพ่ฎกไธ€่‡ดๆ€ง๏ผš

    • ไฝฟ็”จ็ปŸไธ€็š„้ขœ่‰ฒๆ–นๆกˆๅ’Œๅญ—ไฝ“
    • ้ตๅพช็Žฐๆœ‰็š„็ป„ไปถๆ ทๅผๅ’Œไบคไบ’ๆจกๅผ
    • ไฟๆŒๅ“ๅบ”ๅผ่ฎพ่ฎก็š„ๅ…ผๅฎนๆ€ง
  3. ๆ–ฐๅŠŸ่ƒฝๅผ€ๅ‘๏ผš

    • ๅœจๆ issue ่ฎจ่ฎบๆ–ฐๅŠŸ่ƒฝ้œ€ๆฑ‚ๆ—ถ๏ผŒ่ฏทๆ˜Ž็กฎ UI ๆ–น้ข็š„ๅ…ทไฝ“่ฆๆฑ‚
    • ไผ˜ๅ…ˆ่€ƒ่™‘ไฝฟ็”จ Fumadocs UI ็š„ๆ‰ฉๅฑ•ๅŠŸ่ƒฝ
    • ๅฆ‚้œ€่‡ชๅฎšไน‰็ป„ไปถ๏ผŒ่ฏทไธŽๅ›ข้˜Ÿ่ฎจ่ฎบไปฅไฟๆŒไธ€่‡ดๆ€ง
  4. ๆต‹่ฏ•่ฆๆฑ‚๏ผš

    • ็กฎไฟๆ–ฐ UI ๅŠŸ่ƒฝๅœจไธๅŒ่ฎพๅค‡ๅ’Œๅฑๅน•ๅฐบๅฏธไธ‹ๆญฃๅธธๅทฅไฝœ
    • ๆต‹่ฏ•ไธป้ข˜ๅˆ‡ๆข๏ผˆๆต…่‰ฒ/ๆทฑ่‰ฒๆจกๅผ๏ผ‰ๅ…ผๅฎนๆ€ง
    • ้ชŒ่ฏๆ— ้šœ็ข่ฎฟ้—ฎๅŠŸ่ƒฝ

๐Ÿ› ๏ธ ๆŠ€ๆœฏๆ”น่ฟ›

  • ๆ”น่ฟ›ๆž„ๅปบ่ฟ‡็จ‹
  • ๆทปๅŠ ๆ–ฐ็š„่„šๆœฌๆˆ–ๅทฅๅ…ท
  • ไผ˜ๅŒ–ๆ€ง่ƒฝ
  • ๆ”น่ฟ›ๅฏ่ฎฟ้—ฎๆ€ง

๐Ÿ“‹ PR ๆŒ‡ๅ—

PR ๆ ‡้ข˜ๆ ผๅผ

่ฏทไฝฟ็”จไปฅไธ‹ๆ ผๅผไน‹ไธ€ไฝœไธบ PR ๆ ‡้ข˜๏ผš

Add: New article about [topic]          # ๆทปๅŠ ๆ–ฐๆ–‡็ซ 
Fix: Typo in [file]                     # ไฟฎๅค้”™่ฏฏ
Update: Improve [feature]               # ๆ›ดๆ–ฐๆ”น่ฟ›
Docs: Update contribution guidelines    # ๆ–‡ๆกฃๆ›ดๆ–ฐ
Feat: Add [new feature]                 # ๆ–ฐๅŠŸ่ƒฝ

PR ๆ่ฟฐ

ๅฅฝ็š„ PR ๆ่ฟฐๅบ”่ฏฅๅŒ…ๆ‹ฌ๏ผš

  1. ๅšไบ†ไป€ไนˆไฟฎๆ”น๏ผŸ
  2. ไธบไป€ไนˆ้œ€่ฆ่ฟ™ไบ›ไฟฎๆ”น๏ผŸ
  3. ๅฆ‚ไฝ•ๆต‹่ฏ•่ฟ™ไบ›ไฟฎๆ”น๏ผŸ
  4. ๆœ‰็ ดๅๆ€งๆ›ดๆ”นๅ—๏ผŸ

PR ๆ่ฟฐ็คบไพ‹

## What
Added a new article about dynamic programming algorithms.

## Why
Students need better resources for understanding dynamic programming concepts.

## How
- Created new MDX file with comprehensive examples
- Tested content generation with `pnpm build`
- Verified rendering on local development server

## Testing
- Fumadocs validation passed
- No linting errors
- Previewed locally at `/computer-science/algorithms/dynamic-programming`

๐Ÿ”„ ไปฃ็ ๅฎกๆŸฅๆต็จ‹

  1. ่‡ชๅŠจๆฃ€ๆŸฅ

    • GitHub Actions ๅฐ†่ฟ่กŒ่‡ชๅŠจๅŒ–ๆต‹่ฏ•
    • Fumadocs ๅฐ†้ชŒ่ฏไฝ ็š„ๅ†…ๅฎน
    • Linting ๅฐ†ๆฃ€ๆŸฅไปฃ็ ่ดจ้‡
  2. ๅŒ่กŒ่ฏ„ๅฎก

    • ่‡ณๅฐ‘ไธ€ไฝ็ปดๆŠค่€…ๅฐ†ๅฎกๆŸฅไฝ ็š„ PR
    • ๅฎก้˜…่€…ๅฏ่ƒฝไผš่ฆๆฑ‚ไฟฎๆ”น
    • ไฝ ๅฏไปฅๆ นๆฎๅ้ฆˆๆ›ดๆ–ฐไฝ ็š„ PR
  3. ๅˆๅนถ

    • ไธ€ๆ—ฆๆ‰นๅ‡†๏ผŒ็ปดๆŠค่€…ๅฐ†ๅˆๅนถไฝ ็š„ PR
    • ไฝ ็š„่ดก็Œฎๅฐ†่‡ชๅŠจ้ƒจ็ฝฒ

๐Ÿ“ž ่Žทๅ–ๅธฎๅŠฉ

ๅฆ‚ๆžœไฝ ๅœจ่ดก็Œฎ่ฟ‡็จ‹ไธญ้œ€่ฆๅธฎๅŠฉ๏ผš

  • ๐Ÿ“ง Issues๏ผšไธบ้—ฎ้ข˜ๆˆ–้”™่ฏฏๅˆ›ๅปบ issue
  • ๐Ÿ’ฌ Discussions๏ผšไฝฟ็”จ GitHub Discussions ่ฟ›่กŒไธ€่ˆฌๆ€ง้—ฎ้ข˜่ฎจ่ฎบ
  • ๐Ÿ“– Documentation๏ผšๆŸฅ็œ‹ๆญค CONTRIBUTING.md ๆ–‡ไปถ
  • ๐Ÿ‘ฅ Community๏ผšๅŠ ๅ…ฅๆˆ‘ไปฌ็š„็คพๅŒบ่ฎจ่ฎบ

๐ŸŽ‰ ่ฎคๅฏ

่ดก็Œฎ่€…ๅฐ†๏ผš

  • ่ขซๅˆ—ๅ…ฅไป“ๅบ“่ดก็Œฎ่€…ๅๅ•
  • ๅœจๅ‘ๅธƒ่ฏดๆ˜ŽไธญๆๅŠ้‡่ฆ่ดก็Œฎ
  • ๅœจๆˆ‘ไปฌ็š„ๆ–‡ๆกฃไธญๅพ—ๅˆฐ่ฎคๅฏ

๐Ÿ“œ ่กŒไธบๅ‡†ๅˆ™

่ฏทๅœจๆ‰€ๆœ‰ไบ’ๅŠจไธญไฟๆŒๅฐŠ้‡ๅ’ŒๅŒ…ๅฎนใ€‚ๆˆ‘ไปฌ้ตๅพช่กŒไธบๅ‡†ๅˆ™ไปฅ็กฎไฟ็งฏๆž็š„็คพๅŒบไฝ“้ชŒใ€‚


ๆ„Ÿ่ฐขไฝ ไธบ Involution Hell Docs ๅšๅ‡บ็š„่ดก็Œฎ๏ผ๐ŸŽ‰

Contributing Guide

Thank you for your interest in Involution Hell Docs! This is an open-source documentation site built with Next.js + Fumadocs, with content stored in the app/docs/ folder. We welcome Pull Requests and Issues!


๐Ÿš€ Development Environment

1. Clone Repository

git clone https://github.com/involutionhell/involutionhell.github.io.git
cd involutionhell.github.io

2. Install Dependencies

We use pnpm as our package manager:

pnpm install

If you don't have pnpm installed:

npm install -g pnpm

3. Local Development

Run the development server:

pnpm dev

Open http://localhost:3000 in your browser.

Changes to .md or .mdx files in the docs/ folder will auto-update.


๐Ÿ“š Content Standards

All documentation is stored in the docs/ directory. Each document needs a Frontmatter header, for example:

---
title: Hello World
description: Brief description
date: "2025-09-11"
tags:
  - intro
---

# Hello World

This is the main content.

Required fields:

  • title: Required, document title

Optional fields:

  • description: Brief description
  • date: Publication date
  • tags: Tag list

๐Ÿ“ Directory Structure

Our documentation follows a hierarchical "Folder as a Book" structure that automatically generates URLs and navigation.

Current Structure

๐Ÿ“‚ docs/
โ”œโ”€โ”€ ๐Ÿ“‚ computer-science/           # Computer Science
โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ index.mdx               # Overview
โ”‚   โ””โ”€โ”€ ๐Ÿ“‚ data-structures/        # Data Structures
โ”‚       โ”œโ”€โ”€ ๐Ÿ“„ index.mdx           # Overview
โ”‚       โ”œโ”€โ”€ ๐Ÿ“‚ array/              # Arrays
โ”‚       โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ index.mdx       # Overview
โ”‚       โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ 01-static-array.mdx    # Static Arrays
โ”‚       โ”‚   โ””โ”€โ”€ ๐Ÿ“„ 02-dynamic-array.mdx   # Dynamic Arrays
โ”‚       โ””โ”€โ”€ ๐Ÿ“‚ linked-list/        # Linked Lists
โ”‚           โ”œโ”€โ”€ ๐Ÿ“„ index.mdx       # Overview
โ”‚           โ””โ”€โ”€ ๐Ÿ“„ 01-singly-linked-list.mdx  # Singly Linked List

URL Generation

The file structure automatically generates clean URLs:

  • docs/computer-science/index.mdx โ†’ /computer-science
  • docs/computer-science/data-structures/array/01-static-array.mdx โ†’ /computer-science/data-structures/array/static-array

Naming Conventions

Folders:

  • Use kebab-case for folder names: computer-science, data-structures
  • Each topic folder should have an index.mdx file as the overview

Files:

  • Use kebab-case for file names: static-array.mdx
  • Use numeric prefixes for ordering: 01-, 02-
  • The prefix is removed from the final URL automatically

โœ๏ธ Adding New Articles

Step 1: Choose Location

Decide where your article fits in the existing structure:

# Example: Adding a new data structures topic
docs/computer-science/data-structures/new-topic/

# Example: Adding an article to existing topic
docs/computer-science/data-structures/array/03-new-array-type.mdx

Step 2: Create the File

Create a new .mdx file with proper Frontmatter:

# Create directory if needed
mkdir -p docs/computer-science/data-structures/new-topic

# Create the file
touch docs/computer-science/data-structures/new-topic/index.mdx

Step 3: Write Content

Write your article using Markdown/MDX:

---
title: "Your Article Title"
description: "Brief description of your article"
date: "2024-01-15"
tags:
  - your-topic
  - another-tag
---

# Your Article Title

## Introduction

Your content here...

## Section 1

More content...

## Code Examples

```javascript
// Your code here
function example() {
    return "Hello World!";
}

Conclusion

Summary of your article...


### Step 4: Test Your Changes

Validate your content with Fumadocs:

```bash
pnpm build

This command will:

  • Validate your Frontmatter syntax
  • Check for any MDX errors
  • Generate the content for preview

Step 5: Preview Locally

Start the development server and preview your changes:

pnpm dev

Visit http://localhost:3000 to see your new content.

Step 6: Submit PR

  1. Commit your changes:

    git add .
    git commit -m "Add: New article about [topic]"
  2. Push to your fork:

    git push origin feat/your-article
  3. Create a Pull Request


๐Ÿ“ Writing Guidelines

Content Quality

  • Accuracy: Ensure technical accuracy
  • Clarity: Write clear, understandable explanations
  • Completeness: Cover topics thoroughly
  • Examples: Include practical code examples
  • Updates: Keep content current

Markdown Best Practices

  • Use proper heading hierarchy (h1 โ†’ h2 โ†’ h3)
  • Include code blocks with syntax highlighting
  • Use tables for comparisons
  • Add alt text to images
  • Use links to reference related content

Code Examples

// โœ… Good: Clear, commented code
function binarySearch(arr, target) {
    let left = 0;
    let right = arr.length - 1;

    while (left <= right) {
        const mid = Math.floor((left + right) / 2);

        if (arr[mid] === target) {
            return mid; // Found target
        } else if (arr[mid] < target) {
            left = mid + 1; // Search right half
        } else {
            right = mid - 1; // Search left half
        }
    }

    return -1; // Target not found
}

Language Style

  • English: Use clear, professional English
  • Chinese: Use formal, academic Chinese when needed
  • Technical Terms: Use standard technical terminology
  • Consistency: Maintain consistent terminology throughout

๐Ÿ—๏ธ Build and Export

Build (Generate .next)

pnpm build

This creates an optimized production build in the .next folder.

Static Export (Generate /out directory)

pnpm export

The exported /out directory contains the static site, ready for deployment to GitHub Pages.


๐Ÿšข Deployment

This repository is configured with GitHub Actions. Pushing to the main branch will automatically build and deploy to:

๐Ÿ‘‰ https://involutionhell.github.io/

No manual operation required!


๐Ÿ“‹ Development Workflow

๐Ÿ”„ Create an Issue Before Starting Development

Important Reminder: Before starting any feature development, please first create or find a related issue in GitHub Issues. This helps to:

  • Avoid Duplicate Work: Ensure no conflicts with others' ongoing development
  • Align Development Direction: Determine specific requirements and implementation plans through discussion
  • Transparent Progress: Keep the community informed about project development status
  • Facilitate Collaboration: Allow other contributors to participate in discussions and provide suggestions

Best Practices for Creating Issues

  1. Check Existing Issues: First search for related issues to avoid duplication
  2. Clear Description: Detail the feature requirements, expected outcomes, and use cases
  3. Add Labels: Use appropriate labels (e.g., enhancement, feature, discussion)
  4. Link Development Branch: If development begins, link your development branch in the issue

Recommended Issue Types

  • Feature Request (feature): New feature requirements
  • Enhancement (enhancement): Improvements to existing features
  • Bug Report (bug): Bugs or issues found
  • Discussion (discussion): Topics requiring community discussion

๐Ÿค How to Contribute

Basic Workflow

  1. Fork the repository
  2. Create a new branch for your changes
  3. Make your changes
  4. Test your changes
  5. Submit a Pull Request

Types of Contributions

We welcome the following types of contributions:

๐Ÿ“ Content Contributions

  • Fix documentation content
  • Add new tutorials or guides
  • Translate content to other languages
  • Improve existing articles

๐Ÿ› Bug Fixes

  • Fix typos and grammar errors
  • Fix broken links
  • Fix incorrect information
  • Improve code examples

๐ŸŽจ UI/UX Improvements

  • Improve page styling
  • Enhance user interactions
  • Improve mobile responsiveness
  • Add new features to the UI

๐Ÿ’ก UI Development Recommendations

Prioritize Fumadocs UI Component Library:

This project has migrated to Fumadocs UI as the primary UI framework. Please prioritize the following when developing UI-related features:

  1. Use Fumadocs UI Components:

    • Check Fumadocs UI documentation for available components
    • Prefer built-in components over custom implementations
    • Follow Fumadocs UI design standards and style guidelines
  2. Maintain Design Consistency:

    • Use unified color schemes and fonts
    • Follow existing component styles and interaction patterns
    • Maintain responsive design compatibility
  3. New Feature Development:

    • When creating issues for new features, clearly specify UI requirements
    • Prioritize Fumadocs UI's extension features
    • Discuss custom components with the team to maintain consistency
  4. Testing Requirements:

    • Ensure new UI features work across different devices and screen sizes
    • Test theme switching (light/dark mode) compatibility
    • Verify accessibility features

๐Ÿ› ๏ธ Technical Improvements

  • Improve build process
  • Add new scripts or tools
  • Optimize performance
  • Improve accessibility

๐Ÿ“‹ Pull Request Guidelines

PR Title Format

Please use one of the following formats for your PR title:

Add: New article about [topic]          # ๆทปๅŠ ๆ–ฐๆ–‡็ซ 
Fix: Typo in [file]                     # ไฟฎๅค้”™่ฏฏ
Update: Improve [feature]               # ๆ›ดๆ–ฐๆ”น่ฟ›
Docs: Update contribution guidelines    # ๆ–‡ๆกฃๆ›ดๆ–ฐ
Feat: Add [new feature]                 # ๆ–ฐๅŠŸ่ƒฝ

PR Description

A good PR description should include:

  1. What changes were made?
  2. Why were these changes needed?
  3. How were the changes tested?
  4. Any breaking changes?

Example PR Description

## What
Added a new article about dynamic programming algorithms.

## Why
Students need better resources for understanding dynamic programming concepts.

## How
- Created new MDX file with comprehensive examples
- Tested content generation with `pnpm build`
- Verified rendering on local development server

## Testing
- Fumadocs validation passed
- No linting errors
- Previewed locally at `/computer-science/algorithms/dynamic-programming`

๐Ÿ”„ Code Review Process

  1. Automated Checks

    • GitHub Actions will run automated tests
    • Fumadocs validation will check your content
    • Linting will check code quality
  2. Peer Review

    • At least one maintainer will review your PR
    • Reviewers may request changes
    • You can update your PR based on feedback
  3. Merge

    • Once approved, a maintainer will merge your PR
    • Your contribution will be automatically deployed

๐Ÿ“ž Getting Help

If you need help with contributing:

  • ๐Ÿ“ง Issues: Open an issue for questions or bugs
  • ๐Ÿ’ฌ Discussions: Use GitHub Discussions for general questions
  • ๐Ÿ“– Documentation: Check this CONTRIBUTING.md file
  • ๐Ÿ‘ฅ Community: Join our community discussions

๐ŸŽ‰ Recognition

Contributors will be:

  • Listed in the repository contributors
  • Mentioned in release notes for significant contributions
  • Recognized in our documentation

๐Ÿ“œ Code of Conduct

Please be respectful and inclusive in all interactions. We follow a code of conduct to ensure a positive community experience.


Thank you for contributing to Involution Hell Docs! ๐ŸŽ‰