Skip to main content

Overview

OWASP Nest provides advanced search capabilities powered by Algolia, enabling you to quickly discover projects, chapters, events, and community members across the platform.

Search Indexes

Nest maintains searchable indexes for:
  • Projects - Active OWASP projects with metadata
  • Chapters - OWASP chapters worldwide with location data
  • Events - Upcoming and past OWASP events
  • Members - Community members and contributors
  • Committees - OWASP committees and working groups

Structured Query Syntax

Nest supports structured search queries that allow you to filter results using field-specific criteria.

Query Format

Queries use the format field:value or field>value for comparisons. Multiple conditions are combined with implicit AND logic.
name:security stars:>100

Supported Field Types

String Fields

Use : operator for text matching
name:owasp
name:"web security"

Number Fields

Supports comparison operators: =, >, <, >=, <=
stars:>100
stars:>=50

Date Fields

Use YYYY-MM-DD or YYYYMMDD format
created_at:>2024-01-01
updated_at:>=20240101

Boolean Fields

Accepts: true, false, 1, 0, yes, no, on, off
is_active:true
track_issues:yes

Available Fields

The project search API supports structured queries with these fields:
FieldTypeDescriptionExample
namestringProject name (case-insensitive)name:zap
starsnumberGitHub stars countstars:>500

Search Examples

curl "https://nest.owasp.org/api/v0/projects?q=name:security stars:>100&level=flagship"

Sorting Projects

Projects can be sorted by:
  • created_at / -created_at (newest/oldest)
  • updated_at / -updated_at (recently updated)
  • Default: by level, stars, and forks

Location-Based Filtering

Chapters support geographic filtering using latitude and longitude bounds:
curl "https://nest.owasp.org/api/v0/chapters?latitude_gte=40&latitude_lte=45&longitude_gte=-75&longitude_lte=-70"
All active chapters include geocoded location data (latitude/longitude) for proximity-based search.

Country Filtering

Filter chapters by country:
curl "https://nest.owasp.org/api/v0/chapters?country=United States"

Upcoming Events

Filter for upcoming events only:
curl "https://nest.owasp.org/api/v0/events?is_upcoming=true"
Events also support geographic filtering:
curl "https://nest.owasp.org/api/v0/events?is_upcoming=true&latitude_gte=40&latitude_lte=50"

Event Sorting

Available sorting options:
  • start_date / -start_date
  • end_date / -end_date
  • latitude / -latitude
  • longitude / -longitude

Frontend Search Interface

The Nest frontend provides an intuitive search experience using Algolia’s instant search:

Features

Real-time Results

Instant search results as you type

Faceted Filtering

Filter by project level, location, dates

Pagination

Navigate through large result sets

Sorting Options

Sort by relevance, date, popularity

Algolia Configuration

Search requests use these parameters:
type AlgoliaRequest = {
  indexName: string              // e.g., "projects", "chapters"
  query: string                  // Search query
  page: number                   // Page number (0-indexed)
  hitsPerPage: number           // Results per page
  attributesToRetrieve: string[] // Fields to return
  attributesToHighlight: string[] // Fields to highlight
  filters?: string               // Additional filters
  aroundLatLngViaIP?: boolean   // Auto-detect user location
}

Query Parser Implementation

The structured search is powered by a custom query parser located at:
backend/apps/common/search/query_parser.py

Parser Features

  • Field validation - Enforces field schema with type checking
  • Operator support - Comparison operators for numbers and dates
  • Quoted strings - Multi-word values with escape sequences
  • Error handling - Detailed error messages for invalid queries
  • Case sensitivity - Optional case-sensitive matching
The parser uses pyparsing for robust tokenization and supports quoted strings with escape sequences for complex queries.

Advanced Usage

Combining Filters

All conditions in a query are combined with AND logic:
# Projects named "security" with more than 100 stars at flagship level
curl "https://nest.owasp.org/api/v0/projects?q=name:security stars:>100&level=flagship"

Quote Handling

Use quotes for multi-word values:
# Search for projects with "web application" in the name
q=name:"web application"

Pagination

API responses include pagination metadata:
{
  "items": [...],
  "count": 150,
  "next": "https://nest.owasp.org/api/v0/projects?page=2",
  "previous": null
}

Performance Considerations

Database Indexes

All searchable fields use GIN (Generalized Inverted Index) indexes with trigram support for fast full-text search:
  • Project name: project_name_gin_idx
  • Project leaders: project_leaders_raw_gin_idx

Caching

Search API endpoints use response caching to improve performance for frequently accessed queries.
  • Projects - Discover and explore OWASP projects
  • Chapters - Find local OWASP chapters
  • Events - Browse upcoming events

Build docs developers (and LLMs) love