# cjvt-valency Required submodules: * `https://gitea.cjvt.si/kristjan/cjvt-corpusparser.git` ```bash $ git submodule init $ git submodule update ``` ## Components ### Credentials Copy `env.default` to `env.local` (gitignored). Modify database credentials in `env.local`. The file is used by `make`. ### Database (2 containers) Set db admin, user, pass, etc in 'Makefile'. Spin up the database service and create users: Make sure you create a folder for the data on host machine (see `mongodb-stack.yml` `volumes`. ```bash $ mkdir -p ${HOME}/mongo_container/data/ # default one # $ make database-clean # opt, removes docker services, not data $ make database-service $ make database-users # only first time; user data persists too ``` Populate the database with data form files: * ssj500k.xml * kres.xml * kres_SRL.json Set path to files in `Makefile`. ```bash # spin up a container with python env $ make python-env # install our packages $ make python-env-install # run the code # beforehand, set the data files in Makefile # instead of mounting directories into the container, you can # create a link inside ./data, that points to the desired location $ make fill-database # this is a long operation # if running on a remote server, use nohup: $ nohup $(make fill-database > fill-database.log) & ``` If all goes well, we should be able to inspect the database, filled with corpora, on `0.0.0.0:8087`. ### Flask backend (1 container) Relies heavily on the database. Set that up first. ```bash # spin up container $ make python-env # install our packages $ make python-env-install # needs to be ran once to modify a new database $ make backend-prepare-db # with debugger $ make backend-dev # production $ make backend-prod ``` API endpoints: * GET word list (pre-cached) * GET reduced frames (pre-cached) * POST senses * User auth logic ### Vue frontend (1 container) Relies on Flask backend. Before running `make`, you might need to set the correct api address. Check `./src/frontend_vue/config/config_prod.json`. bash ``` # $ make frontend-dev # development $ make frontend-prod ``` App available on: `http://0.0.0.0:8080`.