Dictionaries you can host and make your own
Run English dictionaries alongside your app: start with 300 000 entries in the project’s own dataset, add Wiktionary, WordNet or OpenGloss, or create your own. Fork and edit datasets while preserving word sources, licenses and history. Read them through a public API, Node.js and Python SDKs, or word pages.
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 of any dataset in the browser — every change kept in a history readers see — moderate the corrections they send, watch the statistics, install, import and export datasets from their cards.
Datasets
The project’s dictionary is published on HuggingFace under CC BY 4.0. Add Wiktionary, WordNet or OpenGloss with server downloads or manual uploads. Create an empty dataset or fork an installed one, set its version and contribution license, and retain word sources and edit history. Each dataset is read separately.
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 of the project — 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. A dataset of another source keeps the license of that source — Wiktionary is share-alike, the WordNets want their notice on every copy — and the instance shows the terms of the dataset it serves; read them before you build on it. OpenGloss also contains generated text: CC BY 4.0 applies, with additional WordNet 3.0 terms on marked words. A word can retain multiple source and contribution licenses; copying or forking does not replace them.