beherbergung/backend
Johannes Lötzsch 7e8daca015 backend: template (from swlkup)
TODO:
* debug why http://localhost:4000/graphiql/index.html doesn't load
* adapt tests from swlkup
* adapt flake from swlkup and test build pipeline
2022-03-06 23:09:59 +01:00
..
.clj-kondo backend: template (from swlkup) 2022-03-06 23:09:59 +01:00
nix backend: template (from swlkup) 2022-03-06 23:09:59 +01:00
resources backend: template (from swlkup) 2022-03-06 23:09:59 +01:00
src backend: template (from swlkup) 2022-03-06 23:09:59 +01:00
.gitattributes backend: template (from swlkup) 2022-03-06 23:09:59 +01:00
.gitignore backend: template (from swlkup) 2022-03-06 23:09:59 +01:00
DB.md backend: template (from swlkup) 2022-03-06 23:09:59 +01:00
README.md README.md placeholders for components 2022-03-06 22:33:21 +01:00
project.clj backend: template (from swlkup) 2022-03-06 23:09:59 +01:00

README.md

„beherbergung“ server

The core of the server is an graphql-api based on specialist.

As database the datalog implementation XTDB is used with a RocksDB data store. Some help how to access the database for development/debug purposes can be found in ./DB.md

Running development server

To start the server and send queries, run:

lein run

curl -H 'Content-type: application/json' -d '{"query":"{ TODO }"}' http://localhost:4000/graphql

Testing

lein test

Production build

lein ring uberjar

java -jar target/beherbergung-*standalone.jar

Reproducible builds

Whenever dependencies are changed, rebuild the mvn2nix-lock.json:

nix run ..#backendUpdatedDeps

This allows to build by:

nix build ..#backend

Configuration

Configuration management is done with yogthos. Default values are set at src/config.edn, there you see the available options. In .lein-env.example you find the variables you should set yourself. To set config options at runtime, use environment variables, java system properties or an .edn file specified using the config environment variable.

Notes to developers

State management

Global state (e.g. instances of database and webserver) are managed by mount.