This directory contains the Jekyll-based help documentation for CodeFrog, hosted on GitHub Pages at help.codefrog.app.
public_html/
├── _config.yml # Jekyll configuration
├── Gemfile # Ruby dependencies
├── CNAME # Custom domain configuration
├── _layouts/ # Jekyll layouts
│ └── help.html # Main help page layout
├── _data/ # Data files
│ └── features.yml # Feature list data
├── assets/ # Static assets
│ ├── css/ # Stylesheets
│ ├── js/ # JavaScript (Simple-Jekyll-Search)
│ └── images/ # Images
├── help/ # Help documentation
│ ├── index.md # Complete Feature List
│ └── mas/ # Mac App Store help pages
│ ├── shortcuts.md
│ ├── workflows.md
│ ├── accessibility.md
│ ├── security.md
│ ├── osv.md
│ ├── secrets.md
│ ├── launch-checklist.md
│ └── ...
└── search.json # Search index (generated)
- Ruby 2.7 or later
- Bundler gem:
gem install bundler
-
Install dependencies:
cd landing-page/public_html bundle install -
Run local server:
bundle exec jekyll serve --livereload -
Open browser:
http://localhost:4000/help/
For local Apache development with PHP redirects, the .htaccess file provides redirects from legacy PHP URLs to new Jekyll structure.
Use the deployment script:
./landing-page/scripts/deploy_docs.shThe script will:
- Check for uncommitted changes
- Install dependencies
- Build the Jekyll site
- Deploy to
gh-pagesbranch - Push to GitHub
-
Build the site:
cd landing-page/public_html JEKYLL_ENV=production bundle exec jekyll build -d _site
-
Deploy
_sitedirectory to GitHub Pages (gh-pages branch)
- Create a new Markdown file in
help/mas/(orhelp/direct/for Direct Download) - Add front matter:
--- title: Page Title layout: help redirect_from: - /help/old-page.php ---
- Write content in Markdown
- Add to navigation in
_layouts/help.htmlif needed
Search uses Lunr.js (a lightweight, client-side search engine) with a generated search.json file. The search index is built client-side from all pages in the help/ directory.
- ✅ Actively maintained (unlike deprecated Simple-Jekyll-Search)
- ✅ Client-side only (no server or API keys needed)
- ✅ Works perfectly with GitHub Pages
- ✅ Fast and lightweight
- ✅ Full-text search with relevance scoring
The search implementation is in assets/js/lunr-search.js and uses the Lunr.js CDN.
Legacy PHP URLs are redirected using:
- GitHub Pages:
jekyll-redirect-fromplugin (in page front matter) - Local Apache:
.htaccessrules
The site is configured for help.codefrog.app:
- CNAME file contains the domain
- DNS: CNAME record pointing to GitHub Pages
- HTTPS: Enabled in GitHub Pages settings
- Update Features: Edit
_data/features.yml - Update Styles: Edit
assets/css/help.css - Update Layout: Edit
_layouts/help.html - Add Pages: Create new Markdown files in
help/
Use the link checker script to validate all internal links in the help documentation:
cd landing-page/help-docs
python3 scripts/check_links.pyThe script will:
- Scan all
.mdfiles in thehelp/directory - Extract internal links matching
/help/mas/...or/help/direct/... - Check if corresponding
.mdfiles exist - Report broken links with file location and line number
- Display summary statistics (total, valid, broken, external links)
Exit codes:
0- All internal links are valid1- Broken links found (see output for details)
Example output:
Checking links in help documentation...
Help directory: /path/to/help
========================================
Link Check Results
========================================
Total links found: 178
Valid internal links: 135
Broken internal links: 8
External/other links: 35
Broken Links:
========================================
✗ mas/getting-started.md:19: [macOS Setup Guide](/help/mas/macos-setup) -> Expected: ...
This helps catch broken links before deployment and ensures all documentation links are valid.