Prerequisites
Before contributing to OWASP projects through Nest, ensure you have:Docker
Required for running Nest locally
pre-commit
Automates code quality checks
Git
Version control for your contributions
GitHub Account
Required to submit pull requests
Windows Users: WSL (Windows Subsystem for Linux) is required. Use the WSL terminal, not PowerShell, to avoid setup issues.
Getting Started
Star and Fork the Repository
Start by starring the project on GitHub to show your support, then fork it to your account.
Configure Algolia Search
- Create a free account at Algolia
- Get your Application ID and Write API Key from the dashboard
- Update
backend/.env:
Run the Application
Start the development environment (this must remain running):Wait until the API responds at http://localhost:8000/api/v0
Contribution Workflow
Find or Create an Issue
- Browse the Issues tab for open issues
- Look for
good first issuelabels if you’re new to the project - Found a bug? Create a new issue describing the problem
Make Your Changes
- Write clean, well-documented code
- Add tests for new functionality
- Ensure your changes only include related files
- Follow the existing code style and patterns
Run Quality Checks
This is a required step - you will not be assigned to new issues if you skip this:This command runs:
- Code linters (frontend and backend)
- Static analysis tools
- Test suites
- Coverage checks
Create a Draft Pull Request
- Go to the original repository on GitHub
- Click “New Pull Request”
- Select your fork and branch
- Mark it as a Draft PR
- Wait for automated checks to complete
Address Automated Review Comments
Review and resolve all comments from:
- CodeRabbit: Code quality suggestions
- SonarQube: Security and maintainability issues
- GitHub Advanced Security: Security vulnerabilities
Mark PR as Ready for Review
Once all automated comments are resolved and CI/CD passes:
- Mark the PR as “Ready for Review”
- Request review from project maintainers
- Wait for human reviewers’ feedback
Optional: Fetching GitHub Data
If you need to work with live GitHub data:Generate GitHub Token
Create a personal access token on GitHub.
Testing Your Contributions
Run All Tests
Run Specific Test Types
- Frontend Tests
- Backend Tests
- E2E Tests
- Security Scans
Test Coverage Requirements
- Backend: Minimum coverage defined in
backend/pyproject.toml - Frontend: Minimum coverage defined in
frontend/jest.config.ts
Accessing Internal Dashboards
Some features require specific permissions for local development:Project Health Dashboard (Staff Access)
Project Health Dashboard (Staff Access)
- Start the backend and open Django Admin at http://localhost:8000/a
- Navigate to GitHub Users and open your user record
- Enable the
is_owasp_staffcheckbox in the Permissions section - Clear browser cookies for
localhost:3000 - Sign in again - the dashboard will appear in the user menu
Mentorship Portal
Mentorship Portal
Option 1: As Project Leader
- Open Django Admin → OWASP → Projects
- Open or create a project
- Add your GitHub username to the
leaders_rawfield
- Open Django Admin → Mentorship → Mentors
- Click Add Mentor
- Select your GitHub user
Troubleshooting
"Unexpected character" error
"Unexpected character" error
This error occurs when
.env files have incorrect encoding.Solution: Open each .env file in VS Code:- Click the encoding indicator in the bottom-right corner
- Select “Save with Encoding”
- Choose “UTF-8” (not “UTF-8 with BOM”)
- Restart with
make run
Docker permission issues on Windows
Docker permission issues on Windows
Ensure:
- WSL integration is enabled in Docker Desktop
- You’re using WSL terminal, not PowerShell
- Project is not cloned under
/mnt/c(Windows C: drive)
Algolia indexing fails
Algolia indexing fails
Verify:
- Your API key has
addObjectpermission - Application ID and API Key are correct in
backend/.env - You’re using the Write API Key, not the Search API Key
Code of Conduct
All contributors must follow the OWASP Code of Conduct. Be respectful, inclusive, and professional in all interactions.Getting Help
If you encounter issues:- Check the Troubleshooting section
- Search existing GitHub Issues
- Ask in the project’s discussion forums
- Reach out to project maintainers