Thank you for your interest in contributing to GraphMind! We welcome contributions from the community. This document provides guidelines and instructions for getting started.
Be respectful, inclusive, and professional. We're committed to providing a welcoming and harassment-free environment for all contributors.
Found a bug? Please open an issue with:
- Clear title describing the problem
- Detailed description of the issue
- Steps to reproduce the problem
- Expected vs actual behavior
- Your environment (OS, Python version, Node version)
- Screenshots or logs if applicable
Example:
Title: PDF upload fails with "Expecting value" error
Steps:
1. Upload a valid PDF
2. Check backend logs
Expected: JSON extracted successfully
Actual: "Expecting value: line 1 column 1" error
Want to suggest a new feature? Open an issue with:
- Feature description – what should it do?
- Motivation – why is this useful?
- Possible implementation – how might it work?
- Alternative approaches – any other ways to solve this?
git clone https://github.com/prutxvi/GraphMind.git
cd GraphMind
git checkout -b feature/your-feature-nameBackend:
cd backend
python -m venv venv
source venv/bin/activate # or venv\Scripts\activate on Windows
pip install -r requirements.txt
cp .env.example .env
# Edit .env with your API keyFrontend:
cd frontend
npm install- Keep commits atomic and well-documented
- Follow the coding style of the project
- Add tests for new features
- Update documentation as needed
Backend:
cd backend
source venv/bin/activate
uvicorn main:app --reload
# Test manually or use curl/PostmanFrontend:
cd frontend
npm run dev
npm run lint # Check for linting errorsgit add .
git commit -m "Add: descriptive commit message"
git push origin feature/your-feature-nameUse clear commit messages:
Add: new feature descriptionFix: bug descriptionRefactor: code area being refactoredDocs: documentation updateTest: test addition or fix
- Reference any related issues:
Fixes #123 - Describe what changes you made and why
- Include screenshots for UI changes
- Ensure all CI checks pass
Example PR description:
## Description
Added PDF parsing improvements to handle malformed JSON responses from AI.
## Changes
- Strip `<think>` tags before JSON parsing
- Implement robust JSON extraction from mixed content
- Add debug logging for parsing failures
## Type of Change
- [x] Bug fix (non-breaking)
- [ ] New feature (non-breaking)
- [ ] Breaking change
## Testing
Tested with:
- Valid PDFs with proper text extraction
- Malformed PDFs
- PDFs with embedded images
## Screenshots
[If UI changes]- Follow PEP 8
- Use type hints for function parameters and returns
- Write docstrings for functions and classes
- Use meaningful variable names
Example:
def extract_json_from_response(response: str) -> dict:
"""Extract JSON object from AI response, handling markdown fences."""
# Implementation
return parsed_json- Use consistent naming (camelCase for variables/functions)
- Comment complex logic
- Use functional components with hooks
- Keep components focused and modular
Example:
function ChatMessage({ message, sender, thought }) {
// Component implementation
}cd backend
pytest tests/cd frontend
npm testPlease add tests for new features and bug fixes.
- Update README.md if you add new features
- Add docstrings to new functions/classes
- Comment non-obvious logic
- Include examples in complex features
We welcome contributions in:
- Performance optimizations
- Bug fixes
- Documentation improvements
- Test coverage
- New visualization options
- UI/UX improvements
- Additional LLM provider support
- Advanced query features
- Additional example datasets
- Docker setup
- CI/CD improvements
- Plugin system
- Check existing issues and discussions
- Review the documentation in README.md
- Open a discussion for general questions
- Join our community (if applicable)
Your contributions make GraphMind better for everyone. Thank you for helping!
Happy Contributing! 🚀