libs/search/src/wagoe/search/
├── schema.clj — Malli schemas: SearchDocument, SearchResult, SearchResponse
├── ports.clj — ISearchStore (persistence), ISearchEngine (orchestration),
│ ISearchDefinitions
├── core/
│ ├── index.clj — defsearch, build-document*
│ ├── query.clj — SQL builders (PostgreSQL FTS + H2/SQLite LIKE fallback)
│ ├── ranking.clj, highlighting.clj
│ └── ui.clj — Hiccup: search results, admin index page
└── shell/
├── persistence.clj — SearchStore (next.jdbc, HoneySQL ON CONFLICT upsert)
├── service.clj — SearchService (orchestration, pagination, reindex)
├── http.clj — Routes: API + admin web UI
└── module_wiring.clj — the :wagoe/search component