Skip to content

Latest commit

 

History

History
299 lines (231 loc) · 8.44 KB

File metadata and controls

299 lines (231 loc) · 8.44 KB

🤝 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

    git clone https://github.com/your-username/docugent.git
    cd docugent
  2. Backend Setup

    # 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

    cd frontend
    npm install
  4. Run the Application

    # 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 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

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

# 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
# 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
# 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 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! 🚀