Skip to content

Contributing Guide

Tharushka Dinujaya edited this page Sep 16, 2025 · 1 revision

🀝 Contributing to VaultAI

Help make VaultAI even better! Whether you're a developer, designer, writer, or user, there are many ways to contribute to this growing project.

πŸš€ Ways to Contribute

πŸ› Bug Reports & Feature Requests

Your feedback shapes VaultAI's future:

Reporting Bugs

  1. Check existing issues first on GitHub Issues
  2. Use the bug report template when creating new issues
  3. Include detailed information:
    • Obsidian version and operating system
    • VaultAI version number
    • Steps to reproduce the problem
    • Expected vs actual behavior
    • Screenshots or error messages

Suggesting Features

  1. Search existing feature requests to avoid duplicates
  2. Use the feature request template
  3. Explain the use case - why is this feature needed?
  4. Provide examples of how it would work
  5. Consider implementation - is it technically feasible?

πŸ’¬ Community Support

Help other users get the most from VaultAI:

In GitHub Discussions

  • Answer questions from new users
  • Share your workflows and tips
  • Discuss feature ideas and improvements
  • Provide feedback on proposed changes

Documentation Improvements

  • Fix typos or unclear instructions
  • Add examples and use cases
  • Translate documentation (if applicable)
  • Create video tutorials or guides

πŸ”§ Code Contributions

Ready to dive into the code? Here's how to get started:

πŸ› οΈ Development Setup

Prerequisites

  • Node.js 18+ - Latest LTS version recommended
  • Git - For version control
  • Code Editor - VS Code recommended with TypeScript support
  • Obsidian - For testing the plugin

Fork & Clone

  1. Fork the repository on GitHub
  2. Clone your fork locally:
git clone https://github.com/yourusername/VaultAI.git
cd VaultAI

Install Dependencies

npm install

Development Workflow

  1. Create a branch for your feature:
git checkout -b feature/amazing-feature
  1. Start development mode:
npm run dev
  1. Link to Obsidian (for testing):
# Create symlink to your test vault's plugin directory
ln -s /path/to/VaultAI /path/to/vault/.obsidian/plugins/vaultai
  1. Make your changes and test thoroughly

  2. Build for production:

npm run build

πŸ“ Coding Guidelines

Code Style

  • TypeScript - Strongly typed code preferred
  • ESLint - Follow the existing linting rules
  • Prettier - Use for consistent formatting
  • Comments - Document complex logic and public APIs

File Structure

src/
β”œβ”€β”€ modals/          # UI modal components
β”œβ”€β”€ services/        # Core services (AI, settings)
β”œβ”€β”€ types/           # TypeScript type definitions
└── utils/           # Helper functions

Key Components

  • main.ts - Plugin entry point and core functionality
  • services/GeminiService.ts - AI integration
  • modals/ - User interface components

Testing Your Changes

  1. Test in multiple scenarios:

    • Different note types (markdown, canvas)
    • Various content lengths
    • Edge cases and error conditions
  2. Verify core features:

    • Chat interface functionality
    • Insert Mode cursor tracking
    • Custom prompts system
    • Keyboard shortcuts
  3. Check performance:

    • Response times
    • Memory usage
    • Large document handling

🎯 Contribution Types

🌟 High-Impact Areas

Performance Improvements

  • Optimize API calls and caching
  • Improve large document handling
  • Reduce memory usage

User Experience Enhancements

  • Better error handling and messages
  • Improved UI/UX design
  • Accessibility improvements

Feature Additions

  • New AI model integrations
  • Advanced prompt features
  • Export/import functionality

🎨 Design Contributions

UI/UX Improvements

  • Modern design updates
  • Better responsive layouts
  • Improved accessibility
  • Icon and graphic design

Documentation Design

  • Wiki layout improvements
  • Visual guides and tutorials
  • Infographics and diagrams

πŸ“š Documentation Contributions

Technical Documentation

  • API documentation
  • Architecture guides
  • Development tutorials

User Documentation

  • Tutorial improvements
  • Use case examples
  • Troubleshooting guides

πŸ“‹ Pull Request Process

Before Submitting

  1. Test thoroughly - Ensure your changes work correctly
  2. Update documentation - Include relevant docs updates
  3. Follow commit conventions:
feat: add new custom prompt validation
fix: resolve cursor tracking issue
docs: update installation guide
style: improve code formatting

Pull Request Guidelines

  1. Clear title and description - Explain what and why
  2. Reference related issues - Use "Fixes #123" format
  3. Include testing notes - How did you test the changes?
  4. Screenshots/videos - For UI changes, show before/after
  5. Keep changes focused - One feature/fix per PR

Review Process

  1. Automated checks - Ensure CI/CD passes
  2. Code review - Maintainer will review and provide feedback
  3. Testing - Changes will be tested in various scenarios
  4. Merge - Once approved, changes will be merged

πŸ† Recognition

Contributor Credits

  • Contributors are listed in release notes
  • Significant contributions highlighted in README
  • Community recognition in GitHub Discussions

Becoming a Maintainer

Regular contributors may be invited to become maintainers with:

  • Commit access to the repository
  • Ability to review and merge pull requests
  • Voice in project direction and decisions

🎯 Current Priorities

πŸ”₯ High Priority

  • Performance optimizations for large vaults
  • Better error handling and user feedback
  • Mobile compatibility improvements
  • Additional AI model integrations

πŸš€ Medium Priority

  • Advanced prompt templating system
  • Export/import functionality
  • Plugin API for extensions
  • Collaboration features

πŸ’‘ Future Ideas

  • Voice input integration
  • Real-time collaboration
  • Advanced analytics
  • Plugin marketplace integration

πŸ“ž Getting Help

Development Questions

  • GitHub Discussions - For general development questions
  • Discord/Slack - Real-time chat (if available)
  • Email - Direct contact for sensitive issues

Resources

πŸ™ Thank You

Every contribution, no matter how small, helps make VaultAI better for everyone. Whether you:

  • Report a bug that helps improve stability
  • Suggest a feature that enhances productivity
  • Fix a typo that improves clarity
  • Answer a question that helps another user
  • Write code that adds new capabilities

You're making a difference!

The VaultAI community appreciates your time, effort, and expertise. Together, we're building the future of AI-enhanced note-taking.


πŸ’‘ Ready to contribute? Start by exploring the issues labeled "good first issue" for beginner-friendly ways to get involved!

Clone this wiki locally