- Created a comprehensive Code Guidelines document outlining coding standards and best practices for DebrosFramework. - Added a Development Setup guide to assist contributors in setting up their environment. - Introduced an Overview document to welcome new contributors and explain the project's status and contribution areas. - Updated the intro.md to reflect the current development status of DebrosFramework. - Modified sidebars.ts to include new contributing documentation in the navigation. - Enhanced package.json description for clarity and added relevant keywords. - Updated version information in DebrosFramework.ts and index.ts to reflect the current beta version.
348 lines
7.5 KiB
Markdown
348 lines
7.5 KiB
Markdown
# Contributing to DebrosFramework
|
|
|
|
Thank you for your interest in contributing to DebrosFramework! This document provides guidelines and information for contributors.
|
|
|
|
## Development Status
|
|
|
|
DebrosFramework is currently in **beta (v0.5.0-beta)** and under active development. We welcome contributions from the community to help improve the framework.
|
|
|
|
## Getting Started
|
|
|
|
### Prerequisites
|
|
|
|
- Node.js 18.0 or higher
|
|
- npm or pnpm package manager
|
|
- Git
|
|
- TypeScript knowledge
|
|
- Familiarity with IPFS and OrbitDB concepts
|
|
|
|
### Development Setup
|
|
|
|
1. **Fork and Clone**
|
|
|
|
```bash
|
|
git clone https://github.com/YOUR_USERNAME/network.git
|
|
cd network
|
|
```
|
|
|
|
2. **Install Dependencies**
|
|
|
|
```bash
|
|
pnpm install
|
|
```
|
|
|
|
3. **Build the Project**
|
|
|
|
```bash
|
|
pnpm run build
|
|
```
|
|
|
|
4. **Run Tests**
|
|
|
|
```bash
|
|
# Unit tests
|
|
pnpm run test:unit
|
|
|
|
# Integration tests
|
|
pnpm run test:real
|
|
```
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
src/framework/
|
|
├── core/ # Core framework components
|
|
├── models/ # Model system and decorators
|
|
├── query/ # Query builder and execution
|
|
├── relationships/ # Relationship management
|
|
├── sharding/ # Data sharding logic
|
|
├── migrations/ # Schema migration system
|
|
├── pinning/ # Automatic pinning features
|
|
├── pubsub/ # Event publishing system
|
|
└── types/ # TypeScript type definitions
|
|
|
|
docs/docs/ # Documentation source
|
|
tests/ # Test suites
|
|
└── real-integration/ # Integration test scenarios
|
|
```
|
|
|
|
## How to Contribute
|
|
|
|
### Types of Contributions
|
|
|
|
We welcome the following types of contributions:
|
|
|
|
1. **🐛 Bug Reports** - Report issues and bugs
|
|
2. **✨ Feature Requests** - Suggest new features
|
|
3. **📖 Documentation** - Improve docs and examples
|
|
4. **🔧 Code Contributions** - Bug fixes and new features
|
|
5. **🧪 Testing** - Add tests and improve test coverage
|
|
6. **💡 Examples** - Create usage examples and tutorials
|
|
|
|
### Bug Reports
|
|
|
|
When reporting bugs, please include:
|
|
|
|
- **Clear description** of the issue
|
|
- **Steps to reproduce** the problem
|
|
- **Expected vs actual behavior**
|
|
- **Environment details** (Node.js version, OS, etc.)
|
|
- **Code examples** that demonstrate the issue
|
|
- **Error messages** and stack traces
|
|
|
|
Use our bug report template:
|
|
|
|
````markdown
|
|
## Bug Description
|
|
|
|
[Clear description of the bug]
|
|
|
|
## Steps to Reproduce
|
|
|
|
1. [First step]
|
|
2. [Second step]
|
|
3. [etc.]
|
|
|
|
## Expected Behavior
|
|
|
|
[What you expected to happen]
|
|
|
|
## Actual Behavior
|
|
|
|
[What actually happened]
|
|
|
|
## Environment
|
|
|
|
- DebrosFramework version: [version]
|
|
- Node.js version: [version]
|
|
- OS: [operating system]
|
|
|
|
## Code Example
|
|
|
|
```typescript
|
|
// Minimal code example that reproduces the issue
|
|
```
|
|
````
|
|
|
|
````
|
|
|
|
### Feature Requests
|
|
|
|
For feature requests, please provide:
|
|
|
|
- **Clear use case** and motivation
|
|
- **Detailed description** of the proposed feature
|
|
- **API design suggestions** (if applicable)
|
|
- **Examples** of how it would be used
|
|
- **Alternatives considered**
|
|
|
|
### Code Contributions
|
|
|
|
#### Before You Start
|
|
|
|
1. **Check existing issues** to avoid duplicate work
|
|
2. **Discuss large changes** in an issue first
|
|
3. **Follow the coding standards** outlined below
|
|
4. **Write tests** for your changes
|
|
5. **Update documentation** as needed
|
|
|
|
#### Development Workflow
|
|
|
|
1. **Create a feature branch**
|
|
```bash
|
|
git checkout -b feature/your-feature-name
|
|
````
|
|
|
|
2. **Make your changes**
|
|
|
|
- Write clean, well-documented code
|
|
- Follow TypeScript best practices
|
|
- Add tests for new functionality
|
|
- Update relevant documentation
|
|
|
|
3. **Test your changes**
|
|
|
|
```bash
|
|
pnpm run test:unit
|
|
pnpm run test:real
|
|
pnpm run lint
|
|
```
|
|
|
|
4. **Commit your changes**
|
|
|
|
```bash
|
|
git add .
|
|
git commit -m "feat: add new feature description"
|
|
```
|
|
|
|
5. **Push and create PR**
|
|
```bash
|
|
git push origin feature/your-feature-name
|
|
```
|
|
|
|
#### Commit Message Format
|
|
|
|
We use conventional commits for consistent commit messages:
|
|
|
|
```
|
|
type(scope): description
|
|
|
|
body (optional)
|
|
|
|
footer (optional)
|
|
```
|
|
|
|
**Types:**
|
|
|
|
- `feat`: New features
|
|
- `fix`: Bug fixes
|
|
- `docs`: Documentation changes
|
|
- `style`: Code style changes (formatting, etc.)
|
|
- `refactor`: Code refactoring
|
|
- `test`: Adding or updating tests
|
|
- `chore`: Maintenance tasks
|
|
|
|
**Examples:**
|
|
|
|
```
|
|
feat(models): add support for computed fields
|
|
fix(query): resolve relationship loading issue
|
|
docs(readme): update installation instructions
|
|
```
|
|
|
|
#### Code Style Guidelines
|
|
|
|
1. **TypeScript**
|
|
|
|
- Use strict TypeScript configuration
|
|
- Provide proper type annotations
|
|
- Use interfaces for object types
|
|
- Follow naming conventions
|
|
|
|
2. **Formatting**
|
|
|
|
- Use Prettier for code formatting
|
|
- Run `pnpm run format` before committing
|
|
- Use 2 spaces for indentation
|
|
|
|
3. **ESLint**
|
|
|
|
- Follow ESLint rules
|
|
- Run `pnpm run lint` and fix any issues
|
|
- Use `pnpm run lint:fix` for auto-fixes
|
|
|
|
4. **Documentation**
|
|
- Add JSDoc comments for public APIs
|
|
- Update relevant documentation files
|
|
- Include code examples where appropriate
|
|
|
|
#### Testing Guidelines
|
|
|
|
1. **Unit Tests**
|
|
|
|
- Write tests for all new functionality
|
|
- Use Jest for unit testing
|
|
- Aim for high code coverage
|
|
- Test edge cases and error conditions
|
|
|
|
2. **Integration Tests**
|
|
|
|
- Add integration tests for significant features
|
|
- Test real-world scenarios
|
|
- Use the blog scenario tests as reference
|
|
|
|
3. **Test Structure**
|
|
|
|
```typescript
|
|
describe('FeatureName', () => {
|
|
beforeEach(() => {
|
|
// Setup
|
|
});
|
|
|
|
it('should behave correctly in normal case', () => {
|
|
// Test implementation
|
|
});
|
|
|
|
it('should handle edge case', () => {
|
|
// Edge case test
|
|
});
|
|
|
|
it('should throw error for invalid input', () => {
|
|
// Error case test
|
|
});
|
|
});
|
|
```
|
|
|
|
## Documentation
|
|
|
|
### Documentation Structure
|
|
|
|
- **README.md** - Overview and quick start
|
|
- **docs/docs/intro.md** - Framework introduction
|
|
- **docs/docs/getting-started.md** - Setup guide
|
|
- **docs/docs/core-concepts/** - Architecture and concepts
|
|
- **docs/docs/api/** - API reference
|
|
- **docs/docs/examples/** - Usage examples
|
|
|
|
### Writing Documentation
|
|
|
|
1. **Use clear, concise language**
|
|
2. **Provide code examples**
|
|
3. **Include both basic and advanced usage**
|
|
4. **Keep examples up-to-date**
|
|
5. **Add diagrams where helpful**
|
|
|
|
### Building Documentation
|
|
|
|
```bash
|
|
cd docs
|
|
npm install
|
|
npm run start # Development server
|
|
npm run build # Production build
|
|
```
|
|
|
|
## Release Process
|
|
|
|
Releases are managed by the core team and follow semantic versioning:
|
|
|
|
- **Patch** (0.5.1): Bug fixes and small improvements
|
|
- **Minor** (0.6.0): New features, backward compatible
|
|
- **Major** (1.0.0): Breaking changes
|
|
|
|
## Community Guidelines
|
|
|
|
### Code of Conduct
|
|
|
|
We are committed to providing a welcoming and inclusive environment. Please:
|
|
|
|
- **Be respectful** and considerate
|
|
- **Use inclusive language**
|
|
- **Accept constructive feedback**
|
|
- **Focus on what's best** for the community
|
|
- **Show empathy** towards other contributors
|
|
|
|
### Getting Help
|
|
|
|
- **GitHub Issues** - For bug reports and feature requests
|
|
- **GitHub Discussions** - For questions and community discussion
|
|
- **Discord** - For real-time chat and support
|
|
|
|
## Recognition
|
|
|
|
Contributors will be recognized in:
|
|
|
|
- **CONTRIBUTORS.md** file
|
|
- **Release notes** for significant contributions
|
|
- **Documentation credits** for doc contributions
|
|
|
|
## Questions?
|
|
|
|
If you have questions about contributing, please:
|
|
|
|
1. Check existing documentation
|
|
2. Search GitHub issues
|
|
3. Ask in GitHub Discussions
|
|
4. Contact the maintainers
|
|
|
|
Thank you for contributing to DebrosFramework! 🚀
|