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.0
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.0.tar.gz | 1.5 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| echo_words-1.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.6 MB
Release files / echo_words-1.1.0.tar.gz
| Download URL | echo_words-1.1.0.tar.gz |
|---|---|
| Size | 1.5 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a62116ba44eb4ee7772bc272cf269d7b6bb85e3c6908fc0252f18189013d910c
|
|
BLAKE2b-256 checksum How to use checksums |
583761eedc98910d04a862142a451aa437970b4e18dd4bc346cf737b5d36356c
|
| 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.0-py3-none-any.whl
| Download URL | echo_words-1.1.0-py3-none-any.whl |
|---|---|
| Size | 49.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
327112e92d8153c9a61c812dec6e5a5d9c137ccb80647de8e55ed377dc2fba81
|
|
BLAKE2b-256 checksum How to use checksums |
0e3ada85ca02c911b39c53bb88862ec58aafdbb65e098959fb1beaf1a1be35b1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|