diff --git a/README.md b/README.md index 9e48cf12f8a375dade4de5ab35383e9ea8cc2dd1..7594da9157206db3d9157e489ab35fb0f38cd809 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,54 @@ Castellum Scheduler -- an open source tool for scheduling appointments -Scheduler allows a group of people to coordinate so that everyone gets -at most one of the available time slots. In a way this is the opposite -of doodle where everyone agrees on the same time slot. +Scheduler allows users to set up a set of timeslots and generate unique +invitation links. Each invited person can then pick a free slot without +needing to log in. In a way this is the opposite of doodle where +everyone agrees on the same time slot. Scheduler is part of the [Castellum][1] project, but can be used with other tools just as well. # Installation +## Development + For development, a single `make` will install all dependencies and start the server. You can log in as "admin" with password "password". -# Development with Castellum - If you want to run the scheduler alongside castellum for development you need to set the following settings in castellum: -``` +```python SCHEDULER_URL = 'http://localhost:8001' SCHEDULER_TOKEN = 'CHANGEME' ``` +## Production + +There are many different ways to deploy a django application. Please see +the [django documentation][2] for details. A complete example is also +availabe in the [castellum documentation][3]. + +Most important steps: + +- Create a settings file and set the `DJANGO_SETTINGS_MODULE` + environment variable accordingly +- Provide values `SECRET_KEY`, `PING_URL`, and `API_TOKEN` in the + settings file you just created +- Setup a database and add the relevant information to the settings + file +- Add links to the imprint and data protection information to `NAV`. + You can either create them with an external CMS or by using [django + flatpages][5]. +- Configure authentication, e.g. [LDAP][4] + +## Network communication + +This system is designed so that castellum can remain in a secure +internal network and only the scheduler is accessible from the internet. +Communication between scheduler and castellum must be possible in both +directions. + # API All API requests must send an `Authorization` header with the secret @@ -42,9 +69,15 @@ described above. Example: - $ curl -X PUT -H 'Authorization: token CHANGEME' http://localhost:8001/api/1/foo/ - $ curl -X GET -H 'Authorization: token CHANGEME' http://localhost:8001/api/1/foo/ - {"datetime": "2020-11-03T07:00:00"} - $ curl -X DELETE -H 'Authorization: token CHANGEME' http://localhost:8001/api/1/foo/ +```sh +$ curl -X PUT -H 'Authorization: token CHANGEME' http://localhost:8001/api/1/foo/ +$ curl -X GET -H 'Authorization: token CHANGEME' http://localhost:8001/api/1/foo/ +{"datetime": "2020-11-03T07:00:00"} +$ curl -X DELETE -H 'Authorization: token CHANGEME' http://localhost:8001/api/1/foo/ +``` [1]: https://www.mpib-berlin.mpg.de/research-data/castellum +[2]: https://docs.djangoproject.com/en/stable/howto/deployment/ +[3]: https://git.mpib-berlin.mpg.de/castellum/castellum/-/tree/main/docs/example_deployment +[4]: https://django-auth-ldap.readthedocs.io/en/latest/ +[5]: https://docs.djangoproject.com/en/stable/ref/contrib/flatpages/