How to Contribute
Ways to Contribute
Type | What You Can Do |
---|---|
Code |
Bug fixes, new features, performance improvements |
Documentation |
User guides, tutorials, API docs, translations |
Testing |
Bug reproduction, beta testing, security testing |
Community |
Forum support, mentoring, knowledge sharing |
Getting Started
Prerequisites:
-
GitHub account
-
Basic Git knowledge
-
Development environment setup
-
Understanding of project structure
First Steps:
-
Fork the repository
-
Join community forums
-
Read existing documentation
-
Look for "good first issue" labels
-
Introduce yourself to the community
Development Setup
Required Tools:
-
Git
-
Python 3.8+
-
Node.js (for frontend)
-
Docker (for local testing)
-
Code editor (VS Code recommended)
Setup Commands:
# Clone your fork
git clone https://github.com/YOUR_USERNAME/Oju.git
cd Oju
# Install dependencies
pip install -r requirements.txt
npm install
# Setup development environment
cp .env.example .env
python manage.py migrate
python manage.py runserver
Contribution Process
Standard Workflow:
-
Pick an Issue - Choose from GitHub issues or propose new feature
-
Create Branch -
git checkout -b feature/your-feature-name
-
Make Changes - Follow coding standards
-
Test - Run tests and verify functionality
-
Commit - Use clear commit messages
-
Pull Request - Submit for review
-
Address Feedback - Make requested changes
-
Merge - Approved changes get merged
Commit Message Format:
type: brief description
Longer explanation if needed
Fixes #123
Types: feat
, fix
, docs
, test
, refactor
, style
Code Standards
Python Guidelines:
-
Follow PEP 8
-
Use type hints
-
Write docstrings for functions
-
Add unit tests for new code
-
Maximum line length: 88 characters
Frontend Guidelines:
-
Use ESLint configuration
-
Follow component naming conventions
-
Write accessible HTML
-
Test on multiple browsers
Security Requirements:
-
Validate all user inputs
-
Use parameterized queries
-
Implement proper authentication
-
Follow OWASP guidelines
-
No hardcoded secrets
Pull Request Checklist
Before Submitting:
-
Code follows style guidelines
-
Tests pass locally
-
Documentation updated
-
No merge conflicts
-
Security considerations addressed
-
Performance impact considered
PR Description Template:
## Description
Brief summary of changes
## Type of Change
- [ ] Bug fix
- [ ] New feature
- [ ] Documentation update
- [ ] Performance improvement
## Testing
- [ ] Unit tests added/updated
- [ ] Manual testing completed
- [ ] No breaking changes
## Screenshots (if UI changes)
[Add screenshots here]
Communication Guidelines
Community Standards:
-
Be respectful and professional
-
Focus on technical merit
-
Provide constructive feedback
-
Help newcomers
-
Keep discussions on-topic
Getting Help:
-
GitHub Discussions for questions
-
Discord/Slack for real-time chat
-
Email for security issues
-
Documentation for basic info
Common Tasks
Bug Fixes:
-
Reproduce the issue
-
Write a test that fails
-
Fix the code
-
Verify test passes
-
Update documentation if needed
New Features:
-
Discuss in GitHub issue first
-
Design the solution
-
Implement with tests
-
Update documentation
-
Get community feedback
Documentation:
-
Identify gaps or errors
-
Write clear, concise content
-
Include code examples
-
Test instructions
-
Request review