This is the documentation site for ZOOlanders Essential Addons, built with VitePress. It provides guides and documentation for:
- Essentials for YOOtheme Pro - Essential addons for YOOtheme Pro
- Essentials for ZOO - Essential addons for ZOO
Technology Stack:
- VitePress (Static Site Generator)
- Vue 3
- Algolia Search Integration
- Deployed at: https://docs.zoolanders.com
- Treat this file as the authoritative repository guide for all coding agents.
- Prefer the npm scripts in
package.json; this project uses Yarn 1.22.19. - Keep changes focused on source files under
src/and configuration under.vitepress/. - Do not edit
dist/manually. It is generated build output. - When validating changes, prioritize
yarn run build; run linting and formatting checks when the touched files make them relevant. - Existing lint or formatting issues may be present. Fix issues introduced by your changes, and avoid broad formatting sweeps unless requested.
- Node.js (use the version specified in package.json)
- Yarn 1.22.19 (specified as package manager)
# Install dependencies
yarn install
# Start development server (runs on http://localhost:5173)
yarn dev
# Build for production
yarn build
# Preview production build
yarn preview.
├── .vitepress/ # VitePress configuration
│ ├── config.js # Main config file
│ ├── nav.json # Navigation configuration
│ ├── sidebar.js # Sidebar configuration
│ └── theme/ # Custom theme files
├── src/ # Documentation source files
│ ├── essentials-for-yootheme-pro/ # YOOtheme Pro docs
│ ├── essentials-for-zoo/ # ZOO docs
│ ├── index.md # Homepage
│ └── public/ # Static assets
├── dist/ # Build output (gitignored)
The project uses ESLint and Prettier for code quality:
# Check for linting issues
yarn eslint
# Check formatting
yarn prettier-check
# Auto-format code
yarn prettier-writeImportant:
- Run
yarn prettier-checkto validate formatting. Useyarn prettier-writeonly when requested, when creating new files, or when intentionally formatting files you touched. - Follow Vue 3 composition API style for any Vue components
- Use consistent markdown formatting in documentation files
- Documentation files go in
src/directory - Organize by product:
essentials-for-yootheme-pro/oressentials-for-zoo/ - Use kebab-case for file names:
getting-started.md - Partial files that shouldn't be built go in
_partials/subdirectories
- Use clear, descriptive headings
- Include code examples where applicable
- Keep URLs clean (cleanUrls is enabled)
- Use VitePress features like:
- Frontmatter for page metadata
- Custom containers for tips/warnings
- Code group tabs for multi-language examples
- Edit
.vitepress/nav.jsonfor top navigation - Edit
.vitepress/sidebar.jsfor sidebar navigation - Sidebar is product-specific (YOOtheme Pro vs ZOO)
ALGOLIA_APP_ID- Algolia search app IDALGOLIA_API_KEY- Algolia search API key
Main configuration is in .vitepress/config.js:
- Site metadata (title, description)
- Source directory:
src/ - Output directory:
dist/ - Clean URLs enabled
- Algolia search integration
- GitHub edit links
- Custom transformations for page data
# Production build
yarn build
# Output goes to dist/ directory
# Deploy dist/ contents to web server- Fathom Analytics is integrated (site ID: ZSVBFMCY)
- Sitemap generated at https://docs.zoolanders.com/sitemap.xml
- Beta pages (v3.0-beta) have
noindexmeta tag - Custom title templates per product section
Before creating a PR:
- Run
yarn devand verify changes locally - Run
yarn eslintto check for linting errors - Run
yarn prettier-checkoryarn prettier-write - Run
yarn buildto ensure production build succeeds - Test navigation and search functionality
- Supports versioned docs in
versioned_docs/directory - Custom page transformations handle versioned content
- Create markdown file in appropriate
src/subdirectory - Add frontmatter with title and other metadata
- Update sidebar configuration in
.vitepress/sidebar.js - Test locally with
yarn dev
- Edit
.vitepress/nav.jsonfor top nav - Edit
.vitepress/sidebar.jsfor sidebar - Follow existing structure and naming conventions
- Static assets go in
src/public/ - Images can be referenced as
/image-name.png - Favicon is
/favicon.png
- Main branch:
main - GitHub repo: https://github.com/zoolanders/documentation
- Edit links point to GitHub for easy contributions
- Follow conventional commit messages
- GitHub: https://github.com/zoolanders/documentation
- Twitter: @jzoolanders
- Discord: https://discord.gg/3BT5nHauWr
- Website: https://zoolanders.com
The repository's Copilot-specific guidance has been migrated here from .github/copilot-instructions.md. Keep AGENTS.md as the authoritative agent guide and update this section when repository-specific adjustments are needed.
Note for Copilot: Treat AGENTS.md at the repository root as the primary, authoritative agent guide. Prefer its content and keep most guidance in that file; avoid duplicating large sections here unless Copilot-specific formatting or behavior is required.
This is a VitePress-based documentation site using Vue 3 with the following technology stack:
- VitePress: Static site generator for documentation
- Vue 3: JavaScript framework for interactive components
- Yarn: Package manager (v1.22.19)
- ESLint: Code linting
- Prettier: Code formatting
- Algolia: Search integration
Always use adequate timeouts and NEVER cancel the following operations:
yarn install- Timeout: 180 seconds minimum
- Expected time: 30-60 seconds
- NEVER CANCEL: Dependencies installation is critical
yarn run build- Timeout: 180 seconds minimum
- Expected time: 7-10 seconds
- Output: Creates optimized production build in
/dist - NEVER CANCEL: Build process generates critical assets
yarn run dev- Timeout: Use async=true with 30+ second delays
- Expected behavior: Starts server at http://localhost:5173/
- Status: Ready when "Local: http://localhost:5173/" appears
- NEVER CANCEL: Dev server needs time to initialize
yarn run preview- Timeout: Use async=true with 30+ second delays
- Purpose: Preview production build locally
- NEVER CANCEL: Preview server startup takes time
yarn run eslint- Timeout: 120 seconds
- Expected behavior: Will show linting errors (known issues exist)
- Note: ESLint currently reports errors in source files and dist folder
- Action: Focus only on fixing new errors you introduce
yarn run prettier-check- Timeout: 120 seconds
- Purpose: Check code formatting consistency
- Note: Repository has existing formatting issues (143 files)
yarn run prettier-write- Timeout: 120 seconds
- Purpose: Auto-fix formatting issues
- Use: Only when specifically requested or for new files
/src/: Main documentation content (Markdown files)/.vitepress/: VitePress configuration and theme/.vitepress/config.js: Main configuration file/.vitepress/nav.json: Navigation structure/.vitepress/sidebar.js: Sidebar configuration/.vitepress/theme/: Custom theme components
/dist/: Generated build files (DO NOT EDIT MANUALLY)- Contains optimized assets and generated pages
package.json: Dependencies and scriptsyarn.lock: Locked dependency versionseslint.config.js: ESLint configuration.prettierrc.json: Prettier configuration
- Content location: All documentation files are in
/src/ - Markdown format: Use standard markdown with VitePress extensions
- Navigation: Update
/.vitepress/nav.jsonfor new sections - Sidebar: Modify
/.vitepress/sidebar.jsfor page organization
- Always run
yarn run buildafter content changes - Verify build completes successfully (6-10 seconds expected)
- Check for any build errors or warnings
- Test with
yarn run previewif needed
- Start with
yarn run dev(use async=true) - Wait for "Local: http://localhost:5173/" message
- Allow 30+ seconds for initial startup
- Verify site loads correctly
- Test navigation and search functionality
- Run
yarn run eslintbefore committing - Focus only on NEW errors in files you modified
- Ignore existing errors in dist folder and other files
- Run
yarn run prettier-checkfor formatting validation
- Location:
/src/directory and subdirectories - Format: Markdown (.md) with VitePress frontmatter
- Images: Store in appropriate subdirectories
- Links: Use relative paths for internal links
- Navigation: Edit
/.vitepress/nav.json - Sidebar: Edit
/.vitepress/sidebar.js - Site config: Edit
/.vitepress/config.js - Theme: Modify files in
/.vitepress/theme/
/dist/directory (build output)yarn.lock(unless updating dependencies).git/directory
- Edit markdown file in
/src/ - Run
yarn run build(180s timeout) - Verify build success
- Test with
yarn run dev(async=true) - Validate content renders correctly
- Modify
/.vitepress/nav.jsonorsidebar.js - Run
yarn run build(180s timeout) - Test navigation in dev server
- Verify all links work correctly
- Edit files in
/.vitepress/theme/ - Run
yarn run build(180s timeout) - Test with
yarn run dev(async=true) - Verify visual changes are correct
- Check for markdown syntax errors
- Verify all links are valid
- Ensure images exist at specified paths
- Check frontmatter YAML syntax
- Focus on errors in files you're modifying
- Ignore dist folder errors (they're generated)
- Fix undefined variables and unused imports
- Follow Vue 3 and VitePress conventions
- Allow adequate startup time (30+ seconds)
- Check for port conflicts (5173)
- Restart server if hot reload stops working
- Use
yarn run previewfor production testing
- Short commands: 120 seconds minimum
- Build/Install: 180 seconds minimum
- Dev server: Use async=true with delays
- Package installation (
yarn install) - Build process (
yarn run build) - Server startup (dev/preview)
- Large file operations
- Read error messages completely
- Focus on actionable errors only
- Ignore pre-existing issues unless specifically requested
- Test changes incrementally
The site includes Algolia search functionality:
- Configuration in
/.vitepress/config.js - Search index is managed externally
- Test search functionality after content changes
- Verify search results are relevant and up-to-date
Remember: This is a documentation site where content quality and user experience are paramount. Always validate changes thoroughly and maintain the existing site structure unless specifically requested to modify it.