Shobdo Logo

Architecture

Shobdo uses a layered architecture with database adapters normalizing five distinct SQLite schema patterns into a unified search interface.

Data Flow

Browser → Next.js RSC / API Route
         → DatabaseManager (singleton)
         → Adapter (Oxford | Merriam | Grimm | ...)
         → SQLite (better-sqlite3, read-only)

Adapter Pattern

Each database schema pattern is handled by a dedicated adapter class that implements the DictionaryAdapter interface:

  • OxfordAdapter — 17 Oxford bilingual databases
  • MerriamAdapter — Merriam-Webster dictionary
  • GrimmAdapter — Deutsches Wörterbuch with FTS5
  • TakobotoAdapter — Japanese with kanji and senses
  • RelationalAdapter — Bengali translation databases
  • BilingualAdapter — 8 bilingual translation databases
  • SpanishDictAdapter — Spanish with conjugations

Search Strategy

The DatabaseManager.searchAll() method fans out across all adapters in parallel, collects results, and sorts them by relevance (exact match → prefix match → contains). FTS5 is used where available (Grimm, Takoboto), falling back to LIKE prefix matching.