Files
wiki/public/raw/projects.md
Wayne Sutton 5a8df46681 feat: Add semantic search with vector embeddings
Add vector-based semantic search to complement keyword search.
  Users can toggle between "Keyword" and "Semantic" modes in the
  search modal (Cmd+K, then Tab to switch).

  Semantic search:
  - Uses OpenAI text-embedding-ada-002 (1536 dimensions)
  - Finds content by meaning, not exact words
  - Shows similarity scores as percentages
  - ~300ms latency, ~$0.0001/query
  - Graceful fallback if OPENAI_API_KEY not set

  New files:
  - convex/embeddings.ts - Embedding generation actions
  - convex/embeddingsQueries.ts - Queries/mutations for embeddings
  - convex/semanticSearch.ts - Vector search action
  - convex/semanticSearchQueries.ts - Result hydration queries
  - content/pages/docs-search.md - Keyword search docs
  - content/pages/docs-semantic-search.md - Semantic search docs

  Changes:
  - convex/schema.ts: Add embedding field and by_embedding vectorIndex
  - SearchModal.tsx: Add mode toggle (TextAa/Brain icons)
  - sync-posts.ts: Generate embeddings after content sync
  - global.css: Search mode toggle styles

  Documentation updated:
  - changelog.md, TASK.md, files.md, about.md, home.md

  Configuration:
  npx convex env set OPENAI_API_KEY sk-your-key

  Generated with [Claude Code](https://claude.com/claude-code)

  Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

  Status: Ready to commit. All semantic search files are staged. The TypeScript warnings are pre-existing (unused variables) and don't affect the build.
2026-01-05 18:30:48 -08:00

1.2 KiB

Projects


Type: page Date: 2026-01-06

This markdown framework is open source and built to be extended. Here is what ships out of the box.

Core Features

Real-time sync Posts update instantly across all browsers. No rebuild, no redeploy.

Four themes Dark, light, tan, and cloud. Switch with one click.

Markdown authoring Write in your editor. Frontmatter handles metadata.

Static pages About, Projects, Contact. Add your own.

API Endpoints

The site exposes endpoints for search engines and AI agents:

  • /rss.xml for RSS readers
  • /rss-full.xml for LLM ingestion
  • /sitemap.xml for search engines
  • /api/posts for JSON access
  • /llms.txt for AI discovery

Technical Architecture

content/           <- Markdown files
  blog/            <- Blog posts
  pages/           <- Static pages
convex/            <- Backend functions
src/               <- React frontend

Convex handles the database, queries, and mutations. The frontend subscribes to data and re-renders when it changes. No REST. No GraphQL. Just reactive functions.

Extend It

Fork the repo. Add features. The codebase is TypeScript end to end with full type safety from database to UI.