Thank you for your interest in contributing to WaveMaker Documentation! This guide will help you understand our workflow, conventions, and best practices.
- Getting Started
- Content Guidelines
- File Organization
- Writing Guidelines
- Using the CLI Tool
- Common Tasks
- Review Process
- Style Guide
- Best Practices
- Node.js >= 20.0
- Git with GitHub account
- Code Editor (VS Code recommended)
- Basic knowledge of Markdown
- Familiarity with MDX (Markdown + JSX)
-
Clone the repository
# Option 1: Clone directly (for WaveMaker organization members) git clone https://github.com/wavemaker/docs.git cd docs # Option 2: Fork and clone (for external contributors) # Go to https://github.com/wavemaker/docs and click "Fork" # Then clone your fork: # git clone https://github.com/YOUR_USERNAME/docs.git # cd docs
-
Install dependencies
npm install
-
Start development server
npm start
-
Create a feature branch
git checkout -b feature/your-feature-name
.md- Standard Markdown files.mdx- Markdown with JSX components (preferred)
Every documentation file should include frontmatter:
---
last_update: { author: "Author Name" }
tags: [tag1, tag2] # Optional
------
last_update: { author: "Author Name" }
---
# Overview
Brief introduction to the topic.
## Prerequisites
What users need before starting.
## Basic Usage
Step-by-step instructions.
## Advanced Features
More complex scenarios.
## Examples
Practical examples with code snippets.
## Troubleshooting
Common issues and solutions.
## Related Topics
Links to related documentation.docs/
├── apis-and-services/ # Backend APIs and services
├── user-interfaces/ # UI components and frameworks
│ ├── web/ # Web-specific documentation
│ └── mobile/ # Mobile-specific documentation
├── studio/ # WaveMaker Studio documentation
├── build-and-deploy/ # Deployment guides
├── design-system/ # Design system documentation
└── guide/ # General guides and tutorials
- Files: Use kebab-case:
my-component.md - Directories: Use kebab-case:
user-interfaces/ - Images: Use descriptive names:
login-form-example.png
static/
├── img/
│ ├── component-icons/ # Component icons
│ ├── blogs/ # Blog post images
│ └── section-img/ # Section-specific images
└── learn/
└── assets/ # Documentation assets
- Clear and concise: Use simple, direct language
- User-focused: Write from the user's perspective
- Action-oriented: Use active voice and imperative mood
- Consistent: Follow established patterns and terminology
# Page Title (H1 - only one per page)
## Main Section (H2)
### Subsection (H3)
#### Details (H4)```javascript title="example.js"
const example = {
property: 'value'
};
```:::note
This is a note callout.
:::
:::tip
This is a tip callout.
:::
:::warning
This is a warning callout.
:::
:::danger
This is a danger callout.
:::<!-- Internal links -->
[Link text](./relative-path.md)
[Link text](../other-section/page.md)
<!-- External links -->
[External link](https://example.com)
<!-- With custom sizing -->
<img src="./images/example.png" alt="Alt text" width="500" />Use Mermaid for diagrams:
```mermaid
graph TD
A[Start] --> B{Decision}
B -->|Yes| C[Action 1]
B -->|No| D[Action 2]
```Our documentation manager CLI tool helps maintain consistency:
npm run manage-docs- Create a new sidebar - Sets up a new documentation section
- Create a new category - Adds a category to an existing sidebar
- Create a new doc - Creates a new documentation page
- Rollback and Exit - Undoes all changes from the current session
- Run
npm run manage-docs - Select your desired action
- Follow the interactive prompts
- The tool will:
- Create necessary files and directories
- Update sidebar configurations
- Apply consistent formatting
- Maintain proper file organization
npm run manage-docs
# Select "Create a new doc"
# Follow the prompts-
Create the file
# Example: docs/user-interfaces/web/new-component.mdx -
Add frontmatter and content
--- title: "New Component" --- # New Component Component description and usage.
-
Update sidebar configuration
// In sidebar/sidebars/userInterfacesWebSidebar.js { type: 'doc', id: 'user-interfaces/web/new-component', label: 'New Component' }
-
Create the file
# Format: YYYY-MM-DD-title.md touch blogs/blog/2024-01-20-new-feature.md -
Add frontmatter
--- title: "Introducing New Feature" authors: [author-key] tags: [feature, announcement] --- Brief summary of the post... <!--truncate--> Full blog content here...
-
Update authors.yml (if needed)
author-key: name: Author Name title: Position url: https://github.com/username image_url: https://github.com/username.png
-
Place images in appropriate directory
static/img/section-name/image-name.png -
Reference in documentation

-
Use CLI tool
npm run manage-docs # Select "Create a new sidebar" -
Or manually create
// sidebar/sidebars/newSidebar.js export default [ { type: 'doc', id: 'new-section/overview', label: 'Overview' } ];
-
Update main sidebar file
// sidebar/sidebars.js import newSidebar from './sidebars/newSidebar'; const sidebars = { // ... existing sidebars newSidebar, };
-
Test locally
npm start # Verify your changes work correctly -
Check for broken links
npm run build # Fix any broken links or references -
Format code
npx prettier --write "**/*.{md,mdx,js,json}"
-
Create descriptive title
- ✅ "Add authentication guide for REST APIs"
- ❌ "Update docs"
-
Include description
- What changes were made
- Why the changes were necessary
- Any breaking changes or considerations
-
Link related issues
Closes #123 Related to #456
-
Request appropriate reviewers
- Technical reviewers for accuracy
- Content reviewers for clarity
- Content is accurate and up-to-date
- Writing follows style guidelines
- Links work correctly
- Images display properly
- Code examples are functional
- Sidebar navigation is correct
- No spelling or grammar errors
- Use active voice: "Click the button" not "The button should be clicked"
- Be direct: "Configure the settings" not "You might want to configure the settings"
- Use present tense: "The system creates" not "The system will create"
- Avoid jargon: Explain technical terms when first used
<!-- Ordered lists for steps -->
1. First step
2. Second step
3. Third step
<!-- Unordered lists for options -->
- Option A
- Option B
- Option C<!-- Inline code -->
Use the `className` property to style components.
<!-- File paths -->
Navigate to `src/components/Button.jsx`.
<!-- UI elements -->
Click the **Save** button.- Sentence case for headings: "Getting started with components"
- Title case for proper nouns: "WaveMaker Studio"
- Consistent terminology: Use the same terms throughout
- Overview - What this page covers
- Prerequisites - What users need first
- Main content - Step-by-step instructions
- Examples - Practical demonstrations
- Troubleshooting - Common issues
- Related topics - Links to related content
- Use headings to create clear structure
- Keep sections focused and concise
- Use callouts for important information
- Include code examples where helpful
-
Start with user needs
- What problem does this solve?
- What does the user want to accomplish?
-
Provide context
- Explain why something is important
- Show how it fits into the bigger picture
-
Include examples
- Real-world scenarios
- Complete, working code samples
- Screenshots when helpful
-
Test your instructions
- Follow your own steps
- Verify all links and references
- Check on different devices/browsers
-
Keep content current
- Update for new features
- Remove outdated information
- Verify links regularly
-
Monitor feedback
- Address user questions
- Improve unclear sections
- Add missing information
-
Collaborate effectively
- Communicate with team members
- Share knowledge and insights
- Review others' contributions
-
Optimize images
- Use appropriate file formats
- Compress images for web
- Include alt text for accessibility
-
Minimize bundle size
- Avoid large embedded assets
- Use external links for large files
- Optimize code examples
- Editor: VS Code with Markdown extensions
- Image editing: GIMP or Figma
- Diagrams: Mermaid Live Editor
- Screenshots: Snagit or built-in tools
- Markdown All in One
- MDX
- Prettier - Code formatter
- GitLens
- Spell Right
- GitHub Issues: For bugs and feature requests
- GitHub Discussions: For questions and general discussion
- Team Chat: Internal communication channels
- Documentation: This guide and Docusaurus docs
When reporting issues, include:
- Clear description of the problem
- Steps to reproduce the issue
- Expected vs actual behavior
- Environment details (browser, OS, etc.)
- Screenshots if applicable
Thank you for contributing to WaveMaker Documentation! Your efforts help make our platform more accessible and user-friendly for everyone.