Skip to content

Tags & search

Tags are labels that can be applied to posts to categorise them across spaces. A post can have multiple tags. Tags appear on post cards in the feed and can be used to filter search results.

Tags are managed at Admin → Tags. Each tag has:

  • Name — required, 1–30 characters. Must be unique.
  • Slug — auto-generated from the name. Used in URLs and filter parameters.
  • Color — a hex color (#RRGGBB) used to visually distinguish the tag. Default: #5B4EF5.

Tags can be edited or deleted from the admin panel. Deleting a tag removes it from all posts.

On a fresh install, Nexus seeds seven default tags: announcement, question, tutorial, discussion, feedback, bug, and feature. These can be edited, renamed, or deleted.

When composing a post, click the + tags button in the meta row below the title to open the tag picker. Select one or more tags and click Add tags. Selected tags appear as colored pills and can be removed by clicking them.

Members can follow individual tags. When the feed is filtered to Following, posts tagged with followed tags appear alongside posts from followed spaces.

Tags are listed in the feed sidebar ordered by post count descending, then alphabetically.


Nexus uses PostgreSQL full-text search (tsvector / websearch_to_tsquery) to search across post titles, post bodies, and reply bodies. Search results include highlighted excerpts showing where the query terms matched.

Search is accessed from the search bar at the top of the page (or via the search icon on mobile). Results appear as you type, debounced at 300ms.

Queries shorter than 2 characters return no results.

Search supports natural language operators:

SyntaxMeaningExample
Plain wordsAll terms must match (AND)elixir phoenix
"quoted phrase"Exact phrase match"forum software"
word OR wordEither term must matchelixir OR erlang
-wordExclude termelixir -erlang

Each word is matched as a prefix — searching for elixir also matches elixirs.

If no full-text match is found, Nexus falls back to PostgreSQL trigram similarity (pg_trgm), which tolerates minor typos and misspellings.

  • Post titles
  • Post bodies
  • Reply bodies

Hidden posts and replies are excluded from all search results. Posts in private spaces are excluded for unauthenticated users.

The search page provides the following filters:

FilterOptions
KindAll, Posts only, Replies only
SortRelevance (default), Latest, Top (most reactions)
SpaceFilter to a specific space
TagFilter to posts with a specific tag
AuthorFilter by username (case-insensitive, partial match)
Date fromPosts/replies on or after this date (ISO format)
Date toPosts/replies on or before this date (ISO format)

Reply results support pagination — a Load more button appears when further results are available beyond the first page.

Filters can be combined. On mobile, filters are accessible via a collapsible filter bar above the results.

SortBehaviour
RelevanceRanked by ts_rank — PostgreSQL’s scoring function based on term frequency and position
LatestMost recently created first
TopMost reactions first

Search returns up to 20 posts and 20 replies per page. Cursor-based pagination is used for loading further results.