A Flask server for playing Lexicon
Go to file
Tim Van Baak abbe6e6b2e Track Ersatz status with flag instead of null character
Previously, articles written by Ersatz Scrivener were represented in
the data model by having a NULL character id. This had several awkward
consequences, such as therebeing no real way to distinguish Ersatz
articles from different players without doubling up on foreign keys
whenever there was a character reference, because there would need to
be a user reference as well.

Using a flag on the article itself is a much cleaner solution. There is
no longer a need to have both character and user FKs. Ersatz-ness is
still a special case, but one easily tracked on articles without
changing how basic objects of the game relate to each other. Ersatz
articles can be treated differently in the stats just as easily while
still being subject to character-specific rules like index assignments.
2021-09-15 00:22:38 -07:00
amanuensis Track Ersatz status with flag instead of null character 2021-09-15 00:22:38 -07:00
tests Track Ersatz status with flag instead of null character 2021-09-15 00:22:38 -07:00
.gitignore Refactor and annotate parser submodule 2020-04-21 12:52:02 -07:00
README.AMANUENSIS.md Minor cleanup 2020-04-29 21:58:57 -07:00
README.LEXICON.md Expand documentation 2020-01-27 09:55:54 -08:00
README.md Add icon to readme 2020-04-29 17:13:19 -07:00
default.nix Set up poetry project and nix packaging 2021-04-30 00:12:46 -07:00
mypy.ini Reintegrate lexicon routes and joining 2021-08-13 20:12:13 -07:00
poetry.lock Update flask_wtf version 2021-06-23 22:06:46 -07:00
pyproject.toml Reintegrate lexicon routes and joining 2021-08-13 20:12:13 -07:00
pytest.ini Misc touchups 2021-06-23 22:08:33 -07:00
shell.nix Set up poetry project and nix packaging 2021-04-30 00:12:46 -07:00
tox.ini Refactor and annotate parser submodule 2020-04-21 12:52:02 -07:00

README.md

Amanuensis

amanuensis, n. One who copies or writes from the dictation of another. -OED

Amanuensis is a web application using Flask on top of Python 3 for managing games of Lexicon, the worldbuilding RPG.

Lexicon in short

Lexicon is a role-playing game in which players take on the role of scholars. These scholars are collaborating on the construction of an encyclopedia describing some fantastic world or historical period. Each turn, players submit articles on some particular topic, citing other articles within the burgeoning encyclopedia. This process is complicated by three factors. First, some of the articles being cited will not exist at the time they are cited. Second, players may not cite themselves. Third, players may not contradict anything another player has said.

For more information on the game of Lexicon, see the Lexicon README.

Amanuensis in short

Amanuensis is the successor to Lexipython. Lexipython provides scripting to build lexicons from markdown files, but otherwise provides no solution for article intake or game hosting. The goal of Amanuensis is to provide centralized workflows for the entire game of Lexicon, from creating the game to writing articles for each turn to compiling the final product. Eventually, Amanuensis will be able to dump static files from a Lexicon game, at which point Lexipython will be discontinued.

For technical information on Amanuensis, see the technical README.

Running Amanuensis

Amanuensis is currently developed with Python 3.6 on Ubuntu. Some file locking code uses Linux-specific functionality. There are no plans at present to make the Amanuensis server run on Windows.

Most commands require that the --config-dir commandline argument point to a valid config directory. Use amanuensis init to create a config directory at the given location instead of loading one. The config directory contains private information, so it shouldn't be publicly visible. If an update to Amanuensis causes your config directory to be missing a required config value, run amanuensis init --update.

Amanuensis is installable as a package within a virtual environment using pip install -e . and runnable using python -m amanuensis. Currently, amanuensis run runs the default Flask development server, which is unsuited for visibility to the public Internet. If you run it, it should only be accessible on a secure local network. Before you can run the server, you will need to amanuensis generate-secret.