Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
299 changes: 299 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,299 @@
# 🤝 Contributing to Docugent

Thank you for your interest in contributing to Docugent! We're building the future of interactive documentation, and we welcome contributions from developers, designers, documentation writers, AI/ML engineers, and anyone passionate about improving developer experiences.

## 🎯 What We're Building

Docugent transforms static documentation into interactive, conversational experiences. We're creating an AI-powered assistant that helps developers:
- Get precise answers to their questions
- Receive working code examples
- Test ideas in temporary containers
- Navigate complex documentation efficiently

## 🚀 Quick Start

### Prerequisites
- Python 3.13+
- Node.js 18+
- Git
- Docker (optional but recommended)

### Setting Up Your Development Environment

1. **Fork and Clone**
```bash
git clone https://github.com/your-username/docugent.git
cd docugent
```

2. **Backend Setup**
```bash
# Install Poetry if you haven't already
curl -sSL https://install.python-poetry.org | python3 -

# Install dependencies
poetry install

# Set up environment
cp env.example .env
# Edit .env with your API keys
```

3. **Frontend Setup**
```bash
cd frontend
npm install
```

4. **Run the Application**
```bash
# Terminal 1 - Backend
poetry run python main.py

# Terminal 2 - Frontend
cd frontend
npm run dev
```

## 🎨 Contribution Areas

### For Developers 👨‍💻

#### Backend Development (Python/FastAPI)
- **AI Agent Enhancement**: Improve the Google ADK agent implementation
- **API Development**: Add new endpoints and features
- **Tool Development**: Create new AI agent tools
- **Database Integration**: Work with PostgreSQL and Redis
- **Testing**: Write unit and integration tests

#### Frontend Development (React/TypeScript)
- **UI Components**: Build new React components
- **State Management**: Improve application state handling
- **User Experience**: Enhance the chat interface
- **Responsive Design**: Ensure mobile compatibility
- **Performance**: Optimize bundle size and loading times

#### DevOps & Infrastructure
- **Docker Configuration**: Improve containerization
- **CI/CD Pipelines**: Set up automated testing and deployment
- **Monitoring**: Add logging and metrics
- **Security**: Implement security best practices

### For Designers 🎨

#### UI/UX Design
- **User Interface**: Design intuitive chat interfaces
- **User Experience**: Improve user flows and interactions
- **Visual Design**: Create consistent design systems
- **Accessibility**: Ensure the app is accessible to all users
- **Mobile Design**: Optimize for mobile experiences

#### Design System
- **Component Library**: Build reusable design components
- **Style Guide**: Create comprehensive design documentation
- **Iconography**: Design custom icons and illustrations
- **Branding**: Help establish Docugent's visual identity

### For Documentation Writers 📚

#### Content Creation
- **User Guides**: Write comprehensive user documentation
- **API Documentation**: Document all endpoints and features
- **Tutorials**: Create step-by-step guides
- **Best Practices**: Write development guidelines
- **Examples**: Provide code examples and use cases

#### Documentation Infrastructure
- **Documentation Site**: Build and maintain docs.docugent.dev
- **Content Management**: Organize and structure documentation
- **Search Optimization**: Improve documentation discoverability
- **Translation**: Help with multi-language support

### For AI/ML Engineers 🤖

#### AI Model Integration
- **Model Optimization**: Improve AI response quality
- **Prompt Engineering**: Enhance system prompts
- **Context Management**: Better conversation context handling
- **Tool Integration**: Develop new AI agent capabilities
- **Evaluation**: Create metrics for AI performance

#### Machine Learning
- **Model Training**: Train custom models for specific tasks
- **Data Processing**: Improve data ingestion and processing
- **Recommendation Systems**: Build intelligent suggestions
- **Natural Language Processing**: Enhance text understanding

## 🏷️ Issue Labels

We use the following labels to categorize issues:

### Difficulty Levels
- `easy` - Good for first-time contributors
- `medium` - Requires some experience
- `hard` - Complex features requiring expertise

### Issue Types
- `documentation` - Documentation improvements
- `enhancement` - New features or improvements
- `bug` - Bug fixes
- `design` - UI/UX improvements
- `AIOps` - AI/ML related tasks
- `DevOps` - Infrastructure and deployment
- `frontend` - React/TypeScript work
- `backend` - Python/FastAPI work
- `testing` - Test-related tasks
- `security` - Security improvements

## 📋 Development Workflow

### 1. Find an Issue
- Browse our [Issues](https://github.com/your-org/docugent/issues) page
- Look for issues labeled with your expertise area
- Start with `easy` issues if you're new to the project

### 2. Claim the Issue
- Comment on the issue to let others know you're working on it
- Ask questions if you need clarification

### 3. Create a Branch
```bash
git checkout -b feature/your-feature-name
```

### 4. Make Your Changes
- Follow our coding standards (see below)
- Write tests for new functionality
- Update documentation as needed

### 5. Test Your Changes
```bash
# Backend tests
poetry run pytest

# Frontend tests
cd frontend && npm run lint
```

### 6. Submit a Pull Request
- Create a descriptive PR title
- Fill out the PR template
- Link to the issue you're addressing
- Request reviews from maintainers

## 📝 Coding Standards

### Python (Backend)
- Follow PEP 8 style guidelines
- Use type hints for all functions
- Write docstrings for all public functions
- Use Black for code formatting
- Use isort for import sorting

```bash
# Format code
poetry run black .
poetry run isort .

# Type checking
poetry run mypy app/
```

### TypeScript (Frontend)
- Use ESLint and Prettier
- Follow React best practices
- Use TypeScript strictly
- Write meaningful component names

```bash
# Format and lint
npm run lint
npm run format
```

### Git Commit Messages
- Use conventional commit format
- Keep commits atomic and focused
- Write descriptive commit messages

```
feat: add new AI tool for code execution
fix: resolve session management bug
docs: update API documentation
```

## 🧪 Testing Guidelines

### Backend Testing
- Write unit tests for all new functions
- Use pytest for testing framework
- Aim for >80% code coverage
- Test both success and error cases

### Frontend Testing
- Write component tests using React Testing Library
- Test user interactions and state changes
- Mock API calls appropriately
- Test responsive design on different screen sizes

## 📚 Documentation Standards

### Code Documentation
- Write clear docstrings for all functions
- Include examples in docstrings
- Document complex algorithms
- Keep README files updated

### User Documentation
- Write in clear, simple language
- Include screenshots and examples
- Structure content logically
- Keep documentation up-to-date with code changes

## 🎯 Project-Specific Guidelines

### AI Agent Development
- Follow Google ADK conventions
- Test tools thoroughly before integration
- Handle errors gracefully
- Provide meaningful error messages

### Frontend Development
- Use React hooks appropriately
- Implement proper error boundaries
- Optimize for performance
- Ensure accessibility compliance

### API Development
- Follow RESTful conventions
- Include proper error handling
- Write comprehensive API documentation
- Version APIs appropriately

## 🏆 Recognition

We recognize and appreciate all contributors:

- **First-time contributors** get special recognition
- **Regular contributors** may be invited to join the core team
- **Significant contributions** are highlighted in release notes
- **All contributors** are listed in our contributors file

## 🆘 Getting Help

- **GitHub Issues**: For bug reports and feature requests
- **GitHub Discussions**: For questions and general discussion
- **Discord/Slack**: For real-time chat (link in README)
- **Documentation**: Check our docs for detailed guides

## 📄 Code of Conduct

We're committed to providing a welcoming and inclusive environment. Please read our [Code of Conduct](CODE_OF_CONDUCT.md) for details.

## 🎉 Thank You!

Every contribution, no matter how small, helps make Docugent better for developers everywhere. Thank you for being part of our community!

---

*Ready to make documentation interactive? Let's build the future together! 🚀*
Loading