Contributing to ReViewPoint¶
We welcome contributions to ReViewPoint! This guide will help you get started with contributing to our open-source PDF review platform.
Quick Start for Contributors¶
1. Fork and Clone¶
# Fork the repository on GitHub
# Then clone your fork
git clone https://github.com/YOUR_USERNAME/ReViewPoint.git
cd ReViewPoint
2. Set Up Development Environment¶
# Install all dependencies
pnpm run install
# Start development with PostgreSQL (recommended)
pnpm run dev:postgres
# Or use SQLite for simpler setup
pnpm run dev
3. Make Your Changes¶
# Create a feature branch
git checkout -b feature/your-feature-name
# Make your changes
# Write tests for your changes
# Ensure all tests pass
# Commit using conventional commits
git commit -m "feat(auth): add JWT token refresh mechanism"
4. Submit Pull Request¶
- Push your changes to your fork
- Create a pull request against the main branch
- Fill out the PR template completely
- Wait for review and address feedback
Development Workflow¶
Branch Strategy¶
We use a simplified Git Flow:
main
: Production-ready codefeature/*
: New featuresfix/*
: Bug fixesdocs/*
: Documentation updatesrefactor/*
: Code refactoring
Commit Convention¶
Follow Conventional Commits:
type(scope): description
Examples:
feat(auth): add JWT token refresh mechanism
fix(api): resolve CORS issue for file uploads
docs(readme): update installation instructions
test(user): add unit tests for user service
refactor(db): optimize database queries
chore(deps): update dependencies to latest versions
Code Quality Standards¶
Backend (Python)¶
- Linting:
ruff check
andruff format
- Type Checking:
mypy
for static type analysis - Testing:
pytest
with 85%+ coverage minimum - Documentation: Docstrings for all public functions
Frontend (TypeScript)¶
- Linting:
@biomejs/biome
for formatting and linting - Type Checking: TypeScript strict mode
- Testing:
Vitest
for unit tests,Playwright
for E2E - Component Standards: React best practices
Running Tests¶
# Run all tests
pnpm run test:all
# Backend tests only
pnpm run test:backend
# Frontend tests only
cd frontend && pnpm test
# E2E tests
cd frontend && pnpm run test:e2e
# With coverage
pnpm run test:backend:coverage
cd frontend && pnpm run test:coverage
Types of Contributions¶
🐛 Bug Reports¶
Before submitting a bug report:
- Check existing issues to avoid duplicates
- Test with the latest version
- Provide minimal reproduction steps
Bug report template:
## Bug Description
Clear description of the bug
## Steps to Reproduce
1. Go to...
2. Click on...
3. See error
## Expected Behavior
What you expected to happen
## Actual Behavior
What actually happened
## Environment
- OS: [e.g., Windows 11, macOS 14]
- Browser: [e.g., Chrome 121, Firefox 122]
- ReViewPoint Version: [e.g., v1.2.0]
## Additional Context
Screenshots, logs, or additional information
✨ Feature Requests¶
Before submitting a feature request:
- Check if the feature already exists
- Search existing feature requests
- Consider if it fits the project's scope
Feature request template:
## Feature Description
Clear description of the proposed feature
## Problem Statement
What problem does this solve?
## Proposed Solution
How should this feature work?
## Alternatives Considered
What alternatives have you considered?
## Additional Context
Mockups, examples, or additional context
🔧 Code Contributions¶
Backend Contributions¶
Common areas for contribution:
- API endpoint improvements
- Database optimization
- Authentication enhancements
- File processing features
- Background task improvements
Backend structure:
backend/
├── src/
│ ├── api/ # API endpoints
│ ├── core/ # Core business logic
│ ├── db/ # Database models and operations
│ ├── services/ # Business services
│ └── utils/ # Utility functions
├── tests/ # Test files
└── alembic/ # Database migrations
Frontend Contributions¶
Common areas for contribution:
- UI/UX improvements
- Component library expansion
- Performance optimizations
- Accessibility enhancements
- Mobile responsiveness
Frontend structure:
frontend/src/
├── components/ # Reusable UI components
├── pages/ # Page components
├── hooks/ # Custom React hooks
├── services/ # API service layer
├── stores/ # State management
├── utils/ # Utility functions
└── types/ # TypeScript type definitions
📚 Documentation Contributions¶
Documentation needs:
- API documentation improvements
- Tutorial creation
- Code example additions
- Translation support
- Video tutorials
Documentation structure:
docs/
├── content/
│ ├── index.md # Homepage
│ ├── installation.md # Installation guide
│ ├── developer-overview.md
│ └── resources/ # Additional resources
└── mkdocs.yml # Documentation configuration
Code Review Process¶
Review Criteria¶
All pull requests must:
- ✅ Pass all automated tests
- ✅ Meet code quality standards (linting, formatting)
- ✅ Include appropriate tests for new functionality
- ✅ Update documentation if needed
- ✅ Follow security best practices
- ✅ Maintain backward compatibility when possible
Review Timeline¶
- Initial Response: Within 2 business days
- Full Review: Within 1 week for standard PRs
- Hot Fixes: Within 24 hours for critical issues
Review Process¶
- Automated Checks: CI/CD pipeline runs automatically
- Code Review: Maintainer reviews code quality and design
- Testing: Reviewer tests the functionality
- Approval: PR approved and merged
Security Considerations¶
Security-First Development¶
- Authentication: Secure JWT implementation
- Authorization: Proper permission checks
- Input Validation: Validate all user inputs
- File Uploads: Secure file handling practices
- SQL Injection: Use parameterized queries
- XSS Prevention: Proper output escaping
Reporting Security Issues¶
Do not open public issues for security vulnerabilities.
Instead, email security issues to: security@reviewpoint.dev
Include:
- Description of the vulnerability
- Steps to reproduce
- Potential impact
- Suggested fix (if known)
Release Process¶
Version Numbering¶
We follow Semantic Versioning:
- MAJOR: Breaking changes
- MINOR: New features (backward compatible)
- PATCH: Bug fixes (backward compatible)
Release Schedule¶
- Patch Releases: As needed for bug fixes
- Minor Releases: Monthly feature releases
- Major Releases: When breaking changes are necessary
Community Guidelines¶
Code of Conduct¶
We are committed to providing a welcoming and inclusive environment for all contributors. Please read our Code of Conduct.
Communication Channels¶
- GitHub Issues: Bug reports and feature requests
- GitHub Discussions: General questions and community discussion
- Email: security@reviewpoint.dev for security issues
Recognition¶
Contributors are recognized in:
CONTRIBUTORS.md
file- Release notes for significant contributions
- GitHub contributor graph
- Special recognition for long-term contributors
Getting Help¶
Development Questions¶
- Check the Developer Documentation
- Search existing GitHub issues
- Create a new discussion on GitHub
- Ask specific questions in your PR
Common Setup Issues¶
PostgreSQL Connection Issues:
# Check if PostgreSQL is running
pnpm run postgres:check
# Restart PostgreSQL container
pnpm run postgres:start
Node/Python Version Issues:
# Check versions
node --version # Should be 18+
python --version # Should be 3.11+
# Use version managers if needed
nvm use 18
pyenv local 3.11
Dependency Issues:
Advanced Development¶
Database Migrations:
# Create new migration
cd backend && hatch run alembic revision --autogenerate -m "add new table"
# Apply migrations
pnpm run db:migrate
API Schema Updates:
# Export backend schema
pnpm run api:export-schema
# Generate frontend types
cd frontend && pnpm run generate:types
Contributing Checklist¶
Before submitting your contribution:
- Fork and clone the repository
- Create a feature branch from
main
- Install dependencies with
pnpm run install
- Make your changes with appropriate tests
- Run
pnpm run test:all
to ensure all tests pass - Run linting:
pnpm run lint:backend
andpnpm run lint:frontend
- Follow conventional commit format
- Update documentation if needed
- Create pull request with clear description
- Respond to review feedback promptly
Thank You! 🙏¶
Your contributions help make ReViewPoint better for everyone. Whether you're fixing a bug, adding a feature, or improving documentation, every contribution matters.
For questions about contributing, feel free to create a GitHub discussion or reach out to the maintainers.