Skip to content

Add Chinese (Simplified) Localization Support#24

Open
ShaofeiZi wants to merge 69 commits into
carlvellotti:mainfrom
ShaofeiZi:main
Open

Add Chinese (Simplified) Localization Support#24
ShaofeiZi wants to merge 69 commits into
carlvellotti:mainfrom
ShaofeiZi:main

Conversation

@ShaofeiZi

Copy link
Copy Markdown

Translated documents and websites
The website has added bilingual switching capability

carlvellotti and others added 30 commits October 21, 2025 18:43
Implemented Priority 1-3 SEO enhancements per SEO_IMPLEMENTATION_SPEC.md:

**Sitemap & Robots.txt (P1):**
- Added next-sitemap package for automated sitemap generation
- Configured sitemap.xml and robots.txt in postbuild
- Excluded /company-context/* from sitemap (internal reference only)
- Generated robots.txt with proper crawl directives

**Dynamic Meta Tags (P2):**
- Updated theme.config.tsx with dynamic meta tags based on frontmatter
- Added proper Open Graph and Twitter Card tags per page
- Fixed OG image URL from vercel.app to ccforpms.com
- Added canonical URLs to prevent duplicate content
- Optimized descriptions for all key pages (homepage, getting-started, fundamentals, advanced)
- Added keywords meta tags for Bing compatibility

**Structured Data (P3):**
- Added Course schema.org markup to homepage
- Includes course provider, duration, prerequisites, learning outcomes
- Schema supports rich snippets in Google search results

**Content Optimization:**
- Updated meta descriptions to 150-160 chars with keywords
- Improved image alt text on homepage hero
- Added keywords frontmatter to high-traffic pages

**Expected Impact:**
- Google discovers all 19 pages via sitemap
- Rich course snippets in search results
- 30-40% CTR improvement from better descriptions
- Rank on page 1 for "claude code for product managers" within 2-3 months

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude <noreply@anthropic.com>
- Added google-site-verification meta tag to theme.config.tsx
- Enables domain ownership verification for Search Console
- Required for sitemap submission and indexing

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Add explicit <title> tag in head function
- Uses pageTitle variable (page-specific or default)
- Fixes Lighthouse SEO audit failure
- Should improve SEO score from 92 to 100

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Move SEO_IMPLEMENTATION_SPEC.md to docs/ folder
- Delete temporary files (Lighthouse report, pasted images)
- Move better-graphic.png to website/public/images/
- Move claude-code-for-pms.png to website/public/images/
- Update .gitignore to prevent future temp file commits

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Major restructuring to support GitHub Releases as the primary course distribution mechanism:

**Repository Structure:**
- Move all course materials into course-materials/ folder
  - lesson-modules/
  - company-context/
  - .claude/
- Create course-materials/README.md with student instructions
- Add scripts/create-release.sh for generating release zips
- Update .gitignore to exclude release artifacts (releases/, *.zip)

**Website Updates:**
- Update Module 0.2 (start-and-clone.mdx) to use download approach instead of git clone
- Update homepage with direct download link to GitHub Release
- Change folder references from claude-code-pm-course to claude-code-course

**Documentation:**
- Add docs/GITHUB_RELEASES_PLAN.md with complete implementation spec

**Benefits:**
- Clean separation of website code vs course materials
- Simple one-command download for students (no git required)
- Versioned releases via GitHub
- No zip files bloating git history
- Professional distribution mechanism

**Testing:**
- ✅ Website builds successfully
- ✅ Sitemap generates correctly
- ✅ Release script creates complete-course.zip (603KB)

Ready for testing in branch before creating v1.0.0 release.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Replace multi-step download workflow with single copyable command that downloads, extracts, navigates, and launches Claude Code in one go.

Changes:
- Primary approach: One-line bash command for instant setup
- Alternative section: Shows using Claude to handle download (demonstrates tool capabilities)
- Updated FAQ: Replace git questions with curl/unzip troubleshooting
- Improved student experience: 1 step instead of 5

Before: Start Claude → download → exit → navigate → restart (5 steps)
After: Copy/paste single command → done (1 step)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Enable better UX for copying terminal commands:
- Multi-line bash formatting with backslashes for readability
- Global copy button on all code blocks via defaultShowCopyCode

Changes:
- next.config.mjs: Enable defaultShowCopyCode: true
- Module 0.2: Format download command across 5 lines for readability
- Students can now hover and click copy instead of manual selection

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Improve code block UX with always-visible styled copy button:
- Always show copy button (not just on hover)
- Style with theme red/orange color (#FF5856)
- Teal color on "Copied" state (#1DD3B0)
- Enable word-wrap for long lines in code blocks
- Add clear instruction to click copy button

Changes:
- globals.css: Custom styling for copy button, always visible, word-wrap enabled
- Module 0.2: Updated instruction text to reference copy button

UX improvements:
- Copy button always visible in red/orange
- Scales slightly on hover for feedback
- Long URLs wrap instead of truncate
- Clear instruction tells students to click the button

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Make Modules 0.1 and 0.2 completely beginner-friendly with explicit terminal instructions:
- Add "How to Open Your Terminal" sections with step-by-step Mac/Windows instructions
- Make it clear which commands go in terminal vs Claude Code prompts
- Add inline copy icon to Module 0.2 download instruction
- Remove all Linux references throughout both modules

Changes to Module 0.1 (Installation):
- New "How to Open Your Terminal" section before first command
- Explicit "Type this in your terminal" before each code block
- Changed "Close and reopen" to "Completely close your terminal window and open a new one"
- Removed Linux from prerequisites table and all installation instructions
- Updated troubleshooting section to Mac/Windows only

Changes to Module 0.2 (Start & Clone):
- New "How to Open Your Terminal" section at top
- Updated main instruction: "Open your terminal, then click copy button, paste, and press Enter"
- Added inline copy icon SVG next to "copy button" text
- Explicit "In your terminal, type:" labels for Alternative section
- Updated FAQ to remove Linux, add explicit "type in terminal" labels
- Testing section: clarified "Say to Claude:" vs terminal commands
- Changed "/start-1-1" instruction to "Inside Claude Code, type:"

All command examples now have clear context about WHERE to type them!

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Implemented GA4 tracking (G-XBF1JD68VY) in theme.config.tsx to monitor website traffic and user behavior.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Added Analytics section covering GA4 implementation and download tracking strategy.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Creates quick-setup.sh that automates the complete setup process:
- Installs Claude Code (if not already installed)
- Downloads latest course materials from GitHub releases
- Extracts to ~/Documents/claude-code-course/
- Launches Claude Code with /start-1-1

Users can now install and start with a single command:
curl -fsSL https://raw.githubusercontent.com/carlvellotti/claude-code-pm-course/main/scripts/quick-setup.sh | bash

Includes TEST_MODE flag for safe testing without making changes.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
VIP setup experience that includes a welcome video before installation.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
When running via curl pipe, Claude Code can't access raw mode for
interactive input. Fixed by redirecting stdin from /dev/tty:
  claude "/start-1-1" < /dev/tty

This allows the one-liner install to work end-to-end without errors.

Also removed quick-setup-special.sh (no longer needed).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Makes the script truly zero-to-working for complete beginners:
- Checks Node.js version (requires 18+)
- Installs Homebrew if not present
- Installs Node.js if needed
- Upgrades Node.js if version too old

Users can now run a single command even if they've never coded:
curl -fsSL https://raw.githubusercontent.com/carlvellotti/claude-code-pm-course/main/scripts/quick-setup.sh | bash

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
After Homebrew installs Node, explicitly refresh PATH so node command
is available for the rest of the script execution.

Fixes issue where script would stop after Node installation.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
The eval command was causing the script to exit early. Simplified
to just export PATH directly.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
The set -e was causing the script to exit unexpectedly after Node
installation. Removing it to allow graceful error handling.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Added < /dev/null redirects to brew and claude installer commands
to prevent them from consuming stdin (which is the script itself
when run via curl | bash).

This fixes the issue where script would stop after Node installation
and source code would be printed in the output.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Added favicon.png to website/public/
- Configured favicon links in theme.config.tsx for browsers and iOS devices

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Add page-specific UTM parameters to all newsletter signup links:
- utm_source=ccforpms (identifies traffic from course site)
- utm_medium=course (distinguishes from social/email)
- utm_campaign=[page-name] (tracks which pages drive signups)

This enables analytics tracking to identify which course pages
drive the most newsletter conversions.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Change /start-0-0 to /start-1-1 (correct first lesson command)
- Add missing step to cd into course-materials directory
- Add step to run claude command
- Make instructions more explicit and accurate

Fixes carlvellotti#3
Major refactoring to make course structure fully flexible and maintainable.

## Changes

### Core Architecture
- Created `course-structure.json` as single source of truth for all modules
- All 10 slash commands now identical - they parse their own name and read config
- Teaching scripts use dynamic navigation from config (no hardcoded module refs)
- Website navigation generated from config at build time

### Files Modified
- **Slash commands (10 files)**: Made identical, parse command name to route
- **Teaching scripts (6 files)**: Dynamic "next module" navigation
- **Website (2 files)**: Generate nav from course-structure.json
- **Documentation (2 files)**: SCRIPT_INSTRUCTIONS.md + root CLAUDE.md

### Cleanup
- Removed non-existent modules 2.4-2.6 from commands and config
- Updated .gitignore to include course-structure.json

## Benefits

- ✅ Add modules by editing one JSON file (no file renames needed)
- ✅ Reorder modules without touching existing teaching scripts
- ✅ Website and course materials stay in sync automatically
- ✅ Folder names don't need to match module IDs
- ✅ Future-proof for course evolution

## Testing Required

- Test all slash commands load correct modules
- Test module navigation shows correct "next" commands
- Test website build generates correct navigation
- Test adding a new module (e.g., 1.8) to verify system works

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
…g scripts

The slash commands were reading the config and finding the path, but not
actually following the teaching script. Added explicit instructions to:

- Read the CLAUDE.md file (teaching script)
- Read SCRIPT_INSTRUCTIONS.md for critical guidance
- Follow the script precisely with specific reminders about Say/Check/Action blocks
- Start teaching immediately without meta-commentary

This ensures Claude actually executes the teaching flow instead of improvising.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
All slash commands now start with 'Command to start module' so they
don't appear as blank/generic in the command palette.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Added comprehensive dynamic variable system to SCRIPT_INSTRUCTIONS.md
- Defined {moduleId}, {moduleTitle}, {levelId}, {levelName} variables
- Defined navigation variables ({nextModuleId}, {prevModuleId}, etc.)
- Defined conditional blocks ({ifLastInLevel}, etc.)
- Updated Module 1.1 to use all dynamic variables
- Fixed course overview (only 2 levels, not 5)

This is part 1 of making all teaching scripts fully dynamic.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
…ipts

Updated Modules 1.2-1.7 and 2.1-2.3 with comprehensive dynamic variable system:

**Dynamic Variables:**
- {moduleId}, {moduleTitle}, {levelId}, {levelName}
- {nextModuleId}, {nextCommand}, {prevModuleId}, {nextLevelId}

**Cross-References:**
- {module:custom-subagents} → Module 1.5 by slug
- {module:write-prd} → Module 2.1 by slug
- {module:analyze-data} → Module 2.2 by slug

**Conditional Blocks:**
- {ifLastInLevel:...} - Module 1.7 end-of-level celebration
- {ifNotLastInLevel:...} - Navigation to next module in same level
- {ifLastInCourse:...} - Module 2.3 course completion
- {ifNotLastInCourse:...} - Continue to next module/level

**Benefits:**
- Can add/reorder modules by editing only course-structure.json
- No hardcoded module numbers anywhere in teaching scripts
- Single source of truth for all course structure
- Future-proof architecture for course expansion

Related to previous commits that updated:
- Module 1.1 with dynamic variables
- SCRIPT_INSTRUCTIONS.md with variable documentation
- course-structure.json as single source of truth

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Updated all 10 slash command files with:
- Clear first-line description: "Command to start module"
- More explicit instructions about reading and following teaching scripts
- Consistent formatting across all commands

This ensures all commands display properly in the command palette
and that Claude follows the teaching scripts precisely.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit completes the config-driven architecture by making all teaching
modules position-agnostic through comprehensive conditional logic.

PROBLEM SOLVED:
- Module 1.7 had incomplete conditionals (ifLastInLevel with no fallback)
- Module 2.3 assumed it was the last module in the course
- Most modules blindly referenced {nextCommand} and {prevModuleId} without
  checking if those values exist
- Modules would break if course structure changed (e.g., adding Module 1.8)

SOLUTION IMPLEMENTED:
Created 8-conditional system documented in SCRIPT_INSTRUCTIONS.md:
- ifFirstInCourse / ifNotFirstInCourse (1.1 vs all others)
- ifFirstInLevel / ifNotFirstInLevel (2.1, 3.1 vs mid-level)
- ifLastInLevel / ifNotLastInLevel (1.7, 2.3 vs mid-level)
- ifLastInCourse / ifNotLastInCourse (absolute last vs more ahead)

VARIABLE SAFETY RULES:
- NEVER use {nextCommand}, {nextModuleId}, {nextModuleTitle} outside
  {ifNotLastInCourse:...} conditional
- NEVER use {prevModuleId} outside {ifNotFirstInCourse:...} conditional
- ALL navigation references MUST be wrapped in position-aware conditionals

STANDARD PATTERNS ESTABLISHED:

MODULE START PATTERN:
- Level intro for first-in-level modules
- Continuation message for mid-level modules
- Previous module reference wrapped in {ifNotFirstInCourse:...}

MODULE END PATTERN:
- Level completion celebration for last-in-level modules
- Next module reference wrapped in {ifNotLastInCourse:...}
- Course completion message wrapped in {ifLastInCourse:...}

FILES UPDATED:
- .claude/SCRIPT_INSTRUCTIONS.md - Complete 8-conditional system docs
- All 10 module CLAUDE.md files (1.1-1.7, 2.1-2.3) - Applied patterns

IMPACT:
Modules now work in ANY position. You can:
- Insert Module 1.8 between 1.7 and 2.1 (no breaks)
- Move Module 2.2 to a new Level 3 (works immediately)
- Add Module 2.4 after 2.3 (2.3 adapts automatically)
- Reorder modules within levels (all conditionals adjust)

The course structure is now truly config-driven and maintainable.

🤖 Generated with Claude Code (https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
carlvellotti and others added 28 commits December 10, 2025 13:57
- Update 3.1.1 API key setup with clearer step-by-step instructions
- Update 3.1.1 billing setup to reference correct UI location
- Add new_session() call in 3.1.2 to clear previous session
- Flesh out tag soup vs natural language explanation with examples
- Update variants section to emphasize same-prompt randomness
- Add get_style.py helper script for robust style lookup
- Update 3.1.4 to auto-open style library in browser
- Add TEST_COMMANDS.md for easier release testing

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Teaching script improvements:
- Add "open images" helper note to all CLAUDE.md files (Mac/Windows)
- Add broader context about ANY framework/diagram/timeline applicability
- Add slidemodel.com reference for style inspiration
- Update 3.2.1 to include Marcus in journey map using reference image
- Update 3.2.3 to use app-store-hero.png as style reference
- Add proof-of-concept caveat for marketing outputs

Website reference pages:
- Add Resources section to all 7 nano-banana .mdx pages
- Include verified external links: Gemini docs, Dribbble, Behance,
  Unsplash, Pinterest, Figma, UXPressia, SlideModel, Miro, Lucidchart,
  Hootsuite, Sprout Social, app store guidelines

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Fix start-3-1-4.md to use standard slash command structure
- Fix course-structure.json paths (add 1-fundamentals/ and 2-advanced-pm-work/ prefixes)
- Add .gitkeep to course-materials/outputs/
- Update release script to exclude .venv/, .env, .env.local from zip
- Regenerate sitemap from website build

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Add nano-banana-banner.png for setup page header
- Add nano-banana-og.png (1200x630) for social link previews
- Update setup.mdx with banner and custom ogImage frontmatter

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
…-module

Add Nano Banana: AI Image Generation Course Module
The head function wasn't receiving frontMatter as a prop.
Now uses useConfig() and useRouter() hooks from Nextra to properly
access frontMatter.ogImage for per-page OG images.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Correct paths for style_extract.py and image_gen.py (they're in lesson-modules/3-nano-banana/, not course root)
- Correct outputs folder path

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Changed from non-existent nano-banana-v1.0 release to latest complete-course.zip
- Updated folder name references from nano-banana to claude-code-pm-course
- Fixed all download links to point to /releases/latest

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: carlvellotti <carlvellotti@users.noreply.github.com>
* Add Nimbalyst as recommended visual workspace tool

Updates Module 1.2 to present Nimbalyst as the preferred choice for
visualizing files alongside Claude Code, while keeping Obsidian and
VS Code as alternatives.

Key changes:
- Module 1.2 teaching script: Complete rewrite with tool choice flow
  (Nimbalyst → Obsidian → VS Code) and tool-specific setup instructions
- Website Module 1.2 page: Updated to show all three options with
  feature comparison table
- All references throughout course now tool-agnostic ("your editor"
  instead of "Obsidian")
- Updated course-structure.json description
- Updated CLAUDE.md, SCRIPT_INSTRUCTIONS.md, README.md

Nimbalyst advantages highlighted:
- WYSIWYG markdown editing
- Shows file diffs when Claude makes changes
- Can see .claude/ hidden folder (unlike Obsidian)
- Purpose-built for Claude Code workflows

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Add Nimbalyst hero image to visualizing files page

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
… links

- Add Nimbalyst bullet highlighting Claude Code integration
- Add Obsidian limitation about requiring 2 separate tools
- Update all Nimbalyst links with tracking parameters

Co-authored-by: carlvellotti <carlvellotti@users.noreply.github.com>
Completes the URL replacement for all 21 website files.

Closes carlvellotti#13
- New "Warm Diner Editorial" design matching Full Stack PM brand
- Calls fullstackpm.com/api/subscribe for Beehiiv integration
- Auto-focus on email input when popup appears
- Shows once per user (localStorage)
- Includes attribution tracking (source, UTMs, landing page, referrer)
- Added footer with author credit

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Tracks popup_shown, popup_closed, popup_submitted events
for conversion rate monitoring

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Show "Learn Claude Code IN Claude Code!" instead of duplicate title
Also update og:site_name to match

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Prevents old/duplicate content from being merged into new releases.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Update all install commands to use `claude "/start-1-1"` instead of
just `claude`, so the course begins immediately after setup.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
添加多个中文翻译文件,包括课程材料、用户访谈记录、竞品分析和沟通风格模板。更新了网站构建脚本和前端文件的中文注释。新增了翻译任务计划和执行文档。

refactor(fix-frontmatter.py): 将注释翻译为中文
docs: 添加README和文档的中文版本

Co-Authored-By: Claude <claude@users.noreply.github.com>
添加多个中文翻译文件,包括课程材料、用户访谈记录、竞品分析和沟通风格模板。更新了网站构建脚本和前端文件的中文注释。新增了翻译任务计划和执行文档。

refactor(fix-frontmatter.py): 将注释翻译为中文
docs: 添加README和文档的中文版本
重构网站结构以支持多语言(i18n),将内容按语言分类到en/目录下
添加完整的课程内容页面,包括入门指南、基础模块、高级模块等
实现Next.js多语言路由配置和主题配置更新
新增公司背景和TaskFlow上下文文档

Co-Authored-By: Claude <claude@users.noreply.github.com>
添加trailingSlash配置以支持静态导出
修改Vercel框架预设为Other以避免冲突
更新sitemap生成配置的输出目录

Co-Authored-By: Claude <claude@users.noreply.github.com>
@vercel

vercel Bot commented Jan 7, 2026

Copy link
Copy Markdown

Someone is attempting to deploy a commit to the Carl Vellotti's projects Team on Vercel.

A member of the Team first needs to authorize it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants