Files
formbricks/docs/development/standards/practices/documentation.mdx
Anshuman Pandey 2a107ece7f chore: js-core sdk refactor (#4815)
Co-authored-by: Piyush Gupta <piyushguptaa2z123@gmail.com>
Co-authored-by: Matthias Nannt <mail@matthiasnannt.com>
2025-03-18 15:58:50 +00:00

130 lines
3.7 KiB
Plaintext

---
title: "Documentation"
description: "Standards for documenting code and features in the Formbricks codebase"
icon: "book"
---
## Overview
At Formbricks, we maintain strict documentation standards to ensure code clarity, maintainability, and ease of use for both internal developers and external contributors.
### Contribute to Documentation
We use Mintlify to maintain our documentation. You can find more information about how to contribute to the documentation in the [README](https://github.com/formbricks/formbricks/blob/main/docs/README.md) file.
## Code Documentation
### Function Documentation
1. **Complex Logic Documentation**
- All functions with complex logic must include JSDoc comments
- Document parameters, return types, and potential side effects
- Example:
```typescript
/**
Creates a new user and initializes their preferences
@param {string} name - User's full name
@param {UserOptions} options - Configuration options for user creation
@returns {Promise<User>} The created user object
@throws {ValidationError} If name is invalid
*/
async function createUser(name: string, options: UserOptions): Promise<User> {
// implementation
}
```
2. **TypeScript Ignore Comments**
- When using `@ts-ignore` or `@ts-expect-error`, always include a comment explaining why
- Example:
```typescript
// @ts-expect-error -- Required for dynamic function calls
void window.formbricks.setup(...args);
```
### API Documentation
1. **API Endpoints**
- All new API endpoints must be documented in the OpenAPI specification
- Include request/response schemas, authentication requirements, and examples
- Document both Client API and Management API endpoints
- Place API documentation in the `docs/api-reference` directory
2. **Authentication**
- Clearly specify authentication requirements
- Document API key usage and permissions
- Include error scenarios and handling
### Feature Documentation
- All new features must include a feature documentation file
- Document the feature's purpose, usage, and implementation details
- Include code examples and best practices
## Working with Mintlify
We use Mintlify to write our documentation.
### File Structure
1. **MDX Files**
- All documentation files must use the `.mdx` extension
- Include frontmatter with required metadata:
```markdown
---
title: "Document Title"
description: "Brief description of the content"
icon: "appropriate-icon"
---
```
2. **Navigation**
- Add new pages to the appropriate section in `docs/mint.json`
- Follow the existing navigation structure
- Include proper redirects if URLs change
### Content Guidelines
1. **Writing Style**
- Use clear, concise language
- Break content into logical sections with proper headings
- Include practical examples and code snippets
- Use Mintlify components for notes, warnings, and callouts:
```markdown
<Note>
Important information goes here
</Note>
```
2. **Media and Assets**
- Store images in the appropriate `/images` subdirectory
- Use descriptive alt text for all images
- Optimize images for web delivery
- Use relative paths for internal links
3. **Code Examples**
- Specify the language for all code blocks
- Include comments for complex code snippets
- Use proper indentation and formatting
## Validation
1. **Local Testing**
- Test documentation locally using Mintlify CLI:
```bash
mintlify dev
```
2. **Review Process**
- Documentation changes require peer review
- Verify all links and references work
- Ensure proper formatting and rendering
These documentation requirements ensure that our codebase remains maintainable, accessible, and well-documented for both current and future developers.