mirror of
https://github.com/formbricks/formbricks.git
synced 2026-01-04 01:20:01 -06:00
Co-authored-by: Piyush Gupta <piyushguptaa2z123@gmail.com> Co-authored-by: Matthias Nannt <mail@matthiasnannt.com>
130 lines
3.7 KiB
Plaintext
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.
|