A dictionary you can run next to your app
Vocab Bloom Hub is a self-hosted English dictionary — 300 000 entries with meanings, examples, inflected forms and translations into Russian, Spanish, French, German, Portuguese, Chinese and Arabic — behind a public read-only API, with SDKs, an admin UI and a published dataset. One command to install, MIT for the code, CC BY 4.0 for the data.
Install in one command
The compose file and the environment template are enough: the images are pulled from GitHub Container Registry, Postgres starts alongside, and the dictionary loads itself on the first start.
mkdir vocab-bloom-hub && cd vocab-bloom-hub
curl -fsSLO https://raw.githubusercontent.com/Fristail27/vocab-bloom-hub/main/docker-compose.yml
curl -fsSL https://raw.githubusercontent.com/Fristail27/vocab-bloom-hub/main/.env.example -o .env
# edit .env: ADMIN_PASSWORD, POSTGRES_PASSWORD
docker compose up -d
curl -s localhost:3010/api/ready # {"status":"ok"} once the dictionary is in
What you get
Public API
Versioned, read-only, no login: search with typo tolerance, headwords with meanings, forms, translations, synonyms and antonyms, a batch lookup, cursor-paged lists, a random entry — every answer in one envelope, cached with ETag.
SDKs
Typed clients for Node.js / TypeScript and Python generated from the same OpenAPI document: one method per endpoint, cursor iteration, typed errors, an ETag cache, opt-in retry, a DataFrame for notebooks.
Admin UI
Edit words, meanings, translations, synonyms and antonyms in the browser, watch the statistics, import and export the whole dictionary as a dataset.
Dataset
The dictionary is published on HuggingFace under CC BY 4.0 and loads itself into an empty instance; exports move it between environments, offline included.
Built for operators
Health and readiness probes, graceful shutdown, migrations on start, Prometheus metrics, structured JSON logs with a request id — the things a service needs to be run by someone else.
Search
Exact, prefix, fuzzy and translation tiers on Postgres indexes: the hot reads answer in milliseconds on the full dictionary.
Two SDKs, one contract
Both clients are generated from the committed OpenAPI document of the public API, so they never drift from the server.
Node.js / TypeScript
import { VocabBloomClient } from '@vocab-bloom-hub/client';
const client = new VocabBloomClient({ baseUrl: 'https://your-instance.example/api' });
const { data } = await client.search({ search: 'runing', limit: 5 }); // typo tolerant
const run = await client.word('run'); // every part of speech, forms, meanings, translations
for await (const word of client.iterateWords({ part_of_speech: ['verb'], word_level: ['b1'] })) {
console.log(word.word);
}
Python
from vocab_bloom_hub import VocabBloomClient
client = VocabBloomClient("https://your-instance.example/api")
hits = client.search("runing", limit=5) # typo tolerant
run = client.word("run") # forms, meanings, translations
for word in client.iter_words(part_of_speech=["verb"], word_level=["b1"]):
print(word.word)
df = client.words_dataframe(part_of_speech=["noun"]) # pip install "vocab-bloom-hub[pandas]"
Data and license
The code is MIT. The dictionary data — served by the API, exported as datasets, published on HuggingFace — is CC BY 4.0: free to use and adapt, commercially too, with attribution. It is largely LLM-generated and not verified by humans; read what that means before relying on it.