Initially written with a nasty combination of django
, vanilla JS and a few isolated JS react
objects, stability and performance was poor, with no real future. The decision was therefore made to convert the entire frontend to a single typescript
PWA and the backend to fastapi
and sqlalchemy
, in order to be able to manage async in a sane way (django
may have usable db async at some point but that is likely very far off still).
The result, and all future development, can be found here (where this repo was originally housed).
Transcrobes is the central project for the Transcrobes project (https://transcrob.es) and houses the central API for interacting with the system, as well as most of the modules for interacting with the API (movie player, ebook reader, spaced repetition system, web browser extension, etc.)
Transcrobes is experimental software developed in the context of a PhD research project, and is not yet fully stable.
If you are a Python and/or JS/TS developer learning Chinese, or you really want this to be compatible with learning other languages, then your help is needed!
To start experimenting / working with transcrobes, you just need to:
docker-compose up
to run the entire dev environment (visit localhost:8003
). Here are the default users
username | is_superuser | password |
---|---|---|
john | true | 478951236a |
paul | false | 698753214a |
Most core functionality requires translation and transliteration services. Currently only those provided by Azure's Translator Text API are supported, so you'll need a free key for Azure cognitive services translator. Microsoft provides a free tier, giving 2M characters worth of translation/transliteration/dictionary lookup services per month free (and definitely underreports, meaning you actually get quite a bit more than 2M), though it does require you to give MS a credit card number. However, rather than charge your credit card if you go over the free limit, it will issue errors, meaning you won't get charged unless you manually go into their portal and change from the free tier to the paid tier.
#.env
TRANSCROBES_BING_SUBSCRIPTION_KEY=some_key
- all tests
docker exec -e TRANSCROBES_ZH_CORENLP_HOST="localhost:9000" transcrobes_server ./scripts/runtests.sh
- unit tests
docker exec -e TRANSCROBES_ZH_CORENLP_HOST="localhost:9000" transcrobes_server ./scripts/rununittests.sh
Alternatively, you can also get a working dev env using poetry (the package manager used in this project). Once set up,
poetry install
will install packages in a virtual env created somewhere in $HOME/.cache/pypoetry/virtualenvs/transcrobes-Zf0zUOqi-py3.8
. This set up can be used in conjonction with docker-compose. In this set up,
- venv: runs transcrobes accessible at
localhost:8002
- docker-compose: runs everything else
Please sign all your commits by using git -s
. In the context of this project this means that you are signing the document available at https://developercertificate.org/. This basically certifies that you have the right to make the contributions you are making, given this project's licence. You retain copyright over all your contributions - this sign-off does NOT give others any special rights over your copyrighted material in addition to the project's licence.
See the website for more information. Please also take a look at our code of conduct (or CODE_OF_CONDUCT.md in this repo).
Standing on the shoulders of giants, this project relies on a great number of open source projects, either as dependencies or as inspiration (with copy/paste). Dependencies are mentioned in the package config files pyproject.toml
and package-lock.json
and other non-project-sourced code is clearly marked in the source code.