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.