Vocab Bloom Hub

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.