Prerequisites
Install the following tools before you begin:Docker
Required to run the Nest containers. Docker Desktop is recommended on macOS and Windows.
pre-commit
Runs linters and formatters automatically before each commit.
Terraform
Required for infrastructure-as-code tasks.
tflint
Linter for Terraform files.
Windows notes
- Install WSL and enter the Linux environment with
wslbefore running any Nest commands. - Enable WSL integration in Docker Desktop under Resources → WSL integration.
- Clone the repository inside WSL, not under
/mnt/c(the Windows C: drive). Running from/mnt/ccauses significant performance degradation and Docker permission issues.
Setup
Create environment files
Copy the example environment files for both backend and frontend:Open
backend/.env and set the Django configuration to local mode:Configure Algolia
Nest uses Algolia for search. Create a free account, then add your application credentials to The write API key must have
backend/.env:addObject permission.Start the application
From the project root directory (not Leave this terminal running. The application is ready when
backend/ or frontend/), run:http://localhost:8000/api/v0 responds. Open a second terminal for subsequent commands.Environment variable overview
Full descriptions of all environment variables are in the backend and frontend READMEs:backend/README.md— Django settings, Algolia keys, Slack tokens, GitHub token, and more.frontend/README.md— Next.js settings, NextAuth config, and Algolia read key.
make run after changing any .env file.
Key Makefile commands
Runmake help to see all available commands. The most commonly used ones are:
| Command | Description |
|---|---|
make run | Start all containers |
make check | Run all linters and static analysis |
make check-test | Run checks and tests |
make test | Run all tests |
make load-data | Load database fixtures |
make index-data | Index data into Algolia |
make sync-data | Sync data from GitHub |
make create-superuser | Create a Django superuser |
make security-scan | Run Semgrep and Trivy scans |
Optional setup
GitHub OAuth
To enable the Sign in with GitHub feature locally:- Go to GitHub Developer Settings → OAuth Apps and click New OAuth App.
-
Set the callback URL to
http://localhost:3000/api/auth/callback/github. - Copy the Client ID and generate a Client Secret.
-
Generate a
NEXTAUTH_SECRET: -
Add the values to
frontend/.env:
NestBot development
To run NestBot locally you need a public HTTPS endpoint. Use ngrok with a static domain:Configure ngrok
Create a free ngrok account, get an auth token, and create a static domain at ngrok domains. Then configure ngrok:Start the tunnel:
Add Slack credentials to backend/.env
Access role-gated features
Some UI sections require specific backend roles. To grant yourself access during development:- Project Health Dashboard
- Mentorship Portal
The dashboard is visible only to users with the
is_owasp_staff flag.- Create a superuser with
make create-superuser. - Open Django Admin at
http://localhost:8000/aand log in. - Navigate to GitHub Users and open your user record.
- Tick the
is_owasp_staffcheckbox and save. - Clear your browser cookies for
localhost:3000and sign in again.
http://localhost:3000/projects/dashboard.