Prerequisites
Before you begin, ensure you have the following installed:Docker
Required for running the containerized development environment
pre-commit
Required to automate code quality checks
gzip
Required for loading database fixtures
WSL (Windows Only)
Required for Windows users to enable Linux compatibility
Initial Setup
Set Up Algolia Search
OWASP Nest uses Algolia for search functionality:
- Create a free account at Algolia
- An Algolia app is automatically created during signup (you can skip data import)
- Get your Application ID and Write API Key from the Algolia dashboard
- Update
backend/.envwith your credentials:
backend/.env
The Write API key must have
addObject permission (index write permissions). The default write key includes this.Start the Application
From the project root directory, start all services with Docker Compose:This command builds and starts:
- PostgreSQL database with pgvector extension
- Redis cache
- Django backend server (port 8000)
- Next.js frontend development server (port 3000)
- Background worker for async tasks
Load Initial Data
In a new terminal, load the database fixtures:This restores the PostgreSQL database dump with sample OWASP data.
Index Search Data
Index the data to Algolia for search functionality:This command runs:
algolia_reindex- Indexes all data to Algoliaalgolia_update_replicas- Configures search replicasalgolia_update_synonyms- Updates search synonyms
Optional Setup
Create a Superuser
To access the Django admin interface:GitHub Data Sync
To fetch live OWASP data from GitHub:- Create a GitHub Personal Access Token
- Add it to
backend/.env:
backend/.env
- Sync data from GitHub:
Access Internal Dashboards
Some UI sections require specific Django user permissions.Project Health Dashboard (Staff Access)
- 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 - Save changes
- Clear browser cookies for
localhost:3000and sign in again
Mentorship Portal
Grant access as a Project Leader:- Open Django Admin → OWASP → Projects
- Open or create a project
- Add your GitHub username to the
leaders_rawfield - Save the project
- Clear browser cookies and sign in again
- Ensure you’ve logged into the frontend once
- Open Django Admin → Mentorship → Mentors
- Click Add Mentor and select your GitHub user
- Save changes
- Clear cookies and sign in again
NestBot Development
Set up NestBot with ngrok
Set up NestBot with ngrok
- Create a free account at ngrok
- Install and configure ngrok using these instructions
- Create a static domain at ngrok domains
- Edit ngrok configuration:
- Start ngrok tunnel:
- Configure Slack app using the NestBot manifest
- Update
backend/.envwith Slack credentials:
backend/.env
- Restart the application with
make run
Common Commands
Environment Variables
See the Environment Variables documentation for a complete list of configuration options.Troubleshooting
Unexpected character error
Unexpected character error
This is usually caused by incorrect
.env file encoding.Solution: Open .env files in your text editor and save as “UTF-8 without BOM”:- In VS Code: Click encoding in bottom-right → “Save with Encoding” → “UTF-8”
- Restart the application with
make run
Port already in use
Port already in use
Another process is using ports 3000, 8000, or 5432.Solution:
Permission denied on WSL
Permission denied on WSL
Docker volume permissions issue on Windows.Solution: Ensure your project is not under
/mnt/c. Clone it to your WSL home directory:Docker build fails
Docker build fails
Build cache corruption or network issues.Solution:
Next Steps
Architecture
Understand the system architecture
Backend Development
Learn about Django backend development
Frontend Development
Learn about Next.js frontend development
Testing
Write and run tests