This website serves as the comprehensive documentation portal for xeokit, built using Docusaurus, a modern static website generator. The site combines various content sources to provide a seamless documentation experience for all xeokit products.
- Create a unified documentation platform for all xeokit products
- Improve user experience through better organization and search capabilities
- Enable easier content maintenance and updates
- Support multiple documentation formats (API references, guides, tutorials)
- Maintain consistent branding and styling across all documentation
- Content Review: Provide feedback on documentation clarity and completeness
- User Experience: Suggest improvements for navigation and information architecture
- Prioritization: Help identify which documentation areas need the most attention
- Use Case Examples: Contribute real-world examples of how xeokit is used
The project integrates content from multiple sources:
- Newly authored Docusaurus content
- Transformed content from existing documentation
- SDK examples embedded as iframes
- API documentation generated from code
Docusaurus serves as the main framework, with specialized plugins:
@docusaurus/plugin-content-pages
: For static pages@docusaurus/plugin-content-blog
: For blog posts and announcements@docusaurus/plugin-content-docs
: For documentation content
The repository includes git submodules in the _submodule
folder, which contain source content that is processed to generate documentation.
The documentation content comes from multiple sources:
- Markdown files in the
docs/
directory - Generated content from submodules using scripts in
content-generators/
- Blog posts in the
blog/
directory - Static pages in the
src/pages/
directory
The deployment consists of:
rp.xeokit.io
: Traefik reverse proxyxeokit.io
: Docusaurus build served by nginx (main documentation)sdk-examples.xeokit.io
: Vite build for SDK v3 TypeScript examples
-
Clone the repository and initialize submodules:
git clone <repository-url> cd xeokit-docs git submodule update --init --recursive
It will take a while as submodule repositories are quite big.
-
Install dependencies:
pnpm install
-
Create .env file.
cp .env.localdev .env
At current stage
envs
are required for content generation, and docker. -
Generate SDK documentation:
pnpm run doc:sdk:generate
-
Start the development server:
pnpm run doc:start
-
Build project:
pnpm run doc:build
-
Build project:
pnpm run doc:serve
-
Prepare, build, and run service
task docker:prepare-env TARGET=localhost task docker:compose-build task docker:compose-up
-
Browse websites:
https://rp.xeokit.localhost https://xeokit.localhost https://sdk-examples.xeokit.localhost/
-
Down services:
task docker:compose-down
GitHub Actions is configured for automated deployment from main branch.
For manual deployment from localhost, use the Ansible stack:
-
Set up the Python environment:
curl -LsSf https://astral.sh/uv/install.sh | sh uv sync --project .deploy source .deploy/.venv/bin/activate
-
Login to tailnet:
tailscale login
-
Run the deployment (using Task):
task ansible:deploy
- Enable indexing after migration to production: update robots.txt and docusaurus.config.ts
- Complete the migration of legacy documentation
- Improve search functionality
We welcome contributions from both technical and non-technical team members:
- For content changes, submit a pull request with your proposed changes
- For architectural or design suggestions, open an issue with the "enhancement" label
- For bug reports, open an issue with the "bug" label
[Add appropriate license information here]
This repository uses ESLint 9 with the stylistic package for consistent code formatting and linting.
- Manual linting: Run
pnpm lint:fix
to automatically fix linting issues - VS Code integration:
- Install recommended extensions from the
.vscode
folder - With proper IDE configuration, files will be linted automatically on save
- Install recommended extensions from the
- Pre-commit hooks:
- Husky runs lint-staged to check and fix staged files
- Commits will be blocked if automatic fixes aren't possible
- Create feature branches from
develop
- After rebasing from
develop
, open a Pull Request back intodevelop
main
branch should never be ahead of develop
.
For that reason use git merge origin/develop --ff-only
- Use Conventional Commits format
- Husky pre-commit hook validates messages against
commitlint.config.mjs
- Invalid commit messages will be rejected