Documentation Guide
How the EreoJS documentation is built, how to run it locally, and how to contribute.
How the Docs Work
The documentation site is built with VitePress. Source files are Markdown (.md) located in the docs/ directory at the repository root.
Running Locally
bash
# From the repository root
bun run docs:devThis starts a local server at http://localhost:5173 with hot reloading. Any edits to .md files are reflected in the browser immediately.
To build the docs for production:
bash
bun run docs:buildThe output is generated in docs/.vitepress/dist/.
File Structure
docs/
index.md # Landing page
getting-started/ # Installation, first app, project structure
concepts/ # Core concepts (routing, data loading, etc.)
guides/ # How-to guides (forms, auth, styling, etc.)
tutorials/ # Step-by-step tutorials
api/ # API reference docs
architecture/ # Design philosophy, deep dives, comparisons
ecosystem/ # Plugins, IDE setup, CI/CD, deployment
reference/ # Glossary, cheat sheet, CLI, config
troubleshooting/ # Common errors, debugging, FAQ
contributing/ # Development setup, architecture, testing
migration/ # Migration guides from other frameworks
welcome/ # Feature overview, learning paths, changelog
.vitepress/
config.ts # VitePress configuration and sidebar
theme/ # Custom theme overrides
public/ # Static assets (images, favicons)Writing Style
Follow these conventions when writing documentation:
- Use active voice --- "EreoJS uses file-based routing" not "File-based routing is used by EreoJS"
- Be direct --- Start sentences with the action: "Create a file" not "You should create a file"
- Use second person sparingly --- Prefer imperative ("Run
bun dev") over "You can runbun dev" - Code examples first --- Show the code, then explain it
- One concept per section --- Each
##heading should cover a single topic - Link to related pages --- Use internal links like
[Routing](/concepts/routing)to connect topics
Adding API Docs
API reference pages document individual functions, hooks, and types. Follow this pattern:
md
# functionName
Brief one-line description.
## Signature
\`\`\`ts
function functionName(arg: Type): ReturnType
\`\`\`
## Parameters
| Parameter | Type | Description |
|-----------|------|-------------|
| `arg` | `Type` | What it does |
## Returns
Description of the return value.
## Example
\`\`\`tsx
import { functionName } from '@ereo/package'
// Usage example
\`\`\`Submitting Documentation PRs
- Fork the repository and create a branch
- Make edits in the
docs/directory - Run
bun run docs:devto preview your changes - Verify all internal links work (VitePress reports broken links during build)
- Submit a pull request with
docs:prefix in the commit message
bash
git commit -m "docs: add caching examples to data loading guide"Common PR types:
- Fix typos or errors --- Small corrections to existing pages
- Add examples --- Code examples that demonstrate real use cases
- New guides --- How-to content for specific tasks
- API docs --- Reference documentation for package exports