| title | Etymology Graph Explorer |
|---|---|
| emoji | 🌳 |
| colorFrom | green |
| colorTo | blue |
| sdk | docker |
| app_port | 7860 |
A visual tool for exploring the origins and historical relationships between words. Search for any word and see its etymological journey through time, from modern usage back to ancient roots.
# Install dependencies
uv sync
# Run the server
uv run uvicorn backend.main:app --reload
# Open http://localhost:8000 in your browser# Build the image
docker build -t etymology .
# Run the container
docker run -p 7860:7860 etymology
# Open http://localhost:7860 in your browser- Search any word to see its etymological tree
- Random word button for exploration and discovery
- Interactive graph - zoom, pan, and click on nodes
- Color-coded languages to visualize word evolution across language families
- Mobile-friendly responsive design
| Endpoint | Description |
|---|---|
GET / |
Web interface |
GET /graph/{word} |
Etymology graph for a word (JSON) |
GET /search?q=<query>&limit=<n> |
Search/autocomplete for words |
GET /random |
Random English word |
GET /version |
App version and database stats |
GET /health |
Health check |
Etymology data comes from EtymDB 2.1, an open etymological database derived from Wiktionary.
Fourrier & Sagot (2020), "Methodological Aspects of Developing and Managing an Etymological Lexical Resource: Introducing EtymDB-2.0", Proceedings of the LREC Conference.
- Backend: FastAPI + DuckDB
- Frontend: Vanilla JS + Cytoscape.js
- Data: EtymDB 2.1 (auto-downloaded on first run)
uv sync # Install dependencies
uv run prek install # Set up pre-commit hooks
uv run pytest backend/tests -q # Run testsLinting (ruff) runs automatically on commit via prek.
make hf-deploy # Deploy to HF Spaces (stages, pushes, squashes history)
make cf-deploy # Deploy Cloudflare Worker (custom domain proxy)GPL-3.0 - see LICENSE