echo-words
A private, tailnet-only vocabulary assistant. Send a word — get a linguistic analysis, hear it, and find the card already waiting in your Anki deck.
| A word, or a phrase to pick from |
Analysis, pronunciation, card |
Any language, any script |
Typing the word is the whole workflow:
- the analysis streams in while you read it — translations, senses, usage, origin, and examples with their translations
- the pronunciation is there when it finishes
- the note is already in that language's own Anki deck, deduplicated and synced
- share text from any iOS app and pick the word out of it
- no connection? the word waits in a queue and sends itself later
Documentation
Development
uv sync
npm --prefix webapp ci
inv dev # http://127.0.0.1:8080
inv test # Python + frontend suites
inv pre # ruff, ruff-format, pyrefly, file hygiene
inv test silently skips the frontend suite when webapp/node_modules is
missing, so npm ci is part of the setup, not an optional extra. Never call
Ruff directly — inv pre is the only gate that matches CI.
Deployment is invoke over ssh, and the frontend is built on the VM by the
deploy itself:
inv setup-app --with-host-prep # one-time, idempotent
inv deploy --ref=main
inv status
inv logs
See Development and Deploy to Oracle Cloud in the docs.
Reports
Created with cookiecutter using template
Release files for echo-words 1.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| echo_words-1.1.1.tar.gz | 1.5 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| echo_words-1.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.6 MB
Release files / echo_words-1.1.1.tar.gz
| Download URL | echo_words-1.1.1.tar.gz |
|---|---|
| Size | 1.5 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3c4f39ff887dd9873be122572c4278fb7117d340d61ff1cf24122fa9e14653a1
|
|
BLAKE2b-256 checksum How to use checksums |
a02a32cb92073f839771c021b26611e27937246c2df8514d5cf78ffb449fac25
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / echo_words-1.1.1-py3-none-any.whl
| Download URL | echo_words-1.1.1-py3-none-any.whl |
|---|---|
| Size | 49.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f85ef9ddec021a3eecb8cf56fbfccc591afcf1cb19ba79b6ba7b2ccc5b3377a5
|
|
BLAKE2b-256 checksum How to use checksums |
e4d298fa7936f1c985b1649f2dde891a0f5ccc1c8118cb9bf048ae37e5316bf3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|