Thank you for your interest in contributing to D.A.V.E (Document Analysis & Validation Engine)! We welcome contributions from the community.
By participating in this project, you agree to maintain a respectful, inclusive, and harassment-free environment for everyone.
Note on Licensing: D.A.V.E uses a Dual License model. Contributions are made under the same dual license terms. By contributing, you agree that your contributions may be used under both the Government & Non-Profit License (free) and Commercial License (paid). See LICENSE for details.
- Search existing issues before creating a new one
- Use the issue template and provide:
- Clear, descriptive title
- Steps to reproduce (if it's a bug)
- Expected vs actual behavior
- Environment details (OS, Python version, Node version)
- Error messages or logs
- Check the roadmap and existing issues first
- Explain the problem your feature solves
- Describe the proposed solution
- Consider implementation complexity and scope
-
Fork the repository and create a feature branch:
git checkout -b feature/your-feature-name
-
Make your changes:
- Follow existing code style
- Add tests for new functionality
- Update documentation as needed
- Keep commits atomic and well-described
-
Test your changes:
# Backend tests cd backend pytest # Frontend tests cd frontend npm test
-
Submit a pull request:
- Reference related issues
- Describe what changed and why
- Include screenshots for UI changes
- Ensure CI checks pass
See QUICKSTART.md for detailed setup instructions.
# Backend
cd backend
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
cp .env.example .env # Add your GOOGLE_AI_API_KEY
# Frontend
cd frontend
npm install
cp .env.local.example .env.local# Backend unit tests
cd backend
pytest tests/
# Frontend tests
cd frontend
npm test
# E2E tests
npm run test:e2e- Follow PEP 8 style guide
- Use type hints for function signatures
- Maximum line length: 100 characters
- Use
blackfor auto-formatting:pip install black black app/
- Follow Airbnb style guide
- Use TypeScript strict mode
- Prefer functional components with hooks
- Use Prettier for formatting:
npm run format
D.A.V.E/
├── backend/ # FastAPI Python backend
│ ├── app/
│ │ ├── main.py # API routes
│ │ ├── models.py # Pydantic models
│ │ ├── config.py # Configuration
│ │ └── services/ # AI agents
│ │ └── gemini_service.py
│ └── tests/ # Backend tests
├── frontend/ # Next.js frontend
│ ├── app/ # App router pages
│ ├── components/ # React components
│ └── e2e/ # Playwright tests
└── docs/ # Documentation
- Add agent logic to
backend/app/services/gemini_service.py - Define models in
backend/app/models.py - Add API endpoint in
backend/app/main.py - Update frontend components
- Add tests and documentation
- Update
ControlFamilyenum inmodels.py - Add family metadata to
gemini_service.py - Update baseline definitions if needed
- Test with sample evidence
- Create component in
frontend/components/ - Follow existing shadcn/ui patterns
- Ensure responsive design
- Add TypeScript types
- Test across browsers
- Update README.md for user-facing changes
- Add inline code comments for complex logic
- Update docs/API.md for new endpoints
- Add examples to docs/QUICKSTART.md
type(scope): brief description
Longer explanation if needed
Fixes #123
Types: feat, fix, docs, style, refactor, test, chore
Scopes: backend, frontend, docs, ci, deps
Examples:
feat(backend): add AC-20 control family supportfix(frontend): correct progress bar animation timingdocs(readme): add installation troubleshooting section
- Open a GitHub Discussion for general questions
- Check existing documentation in
/docs - Review closed issues and PRs for examples
Thank you for contributing! 🙌