You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2.5 KiB

categories cover cover_alt date description git slug title url
Python
Tool
Writing
exex.jpg uhm not yet here 10/05/2023 Branching and collaborative writing https://git.xpub.nl/kamo/exex exex EXEX https://hub.xpub.nl/soupboat/exex/

A branching version of the exquisite corpse game, forked from the exquisite branch drawing app developed for SI17.

Write something, upload it and send the link to someone else: they will continue from your excerpt. With a catch: if you send to just one person the chain will continue linearly, but send it to more people and things will start branching in different directions.

Could be a writing machine to work on the collective pubblication for the graduation, inspired by what Kim wrote here.

Install

Clone the repository.

git clone https://git.xpub.nl/kamo/exex.git

Create a virtual environment.

python3 -m venv venv

Install the requirements with pip and the requirements.txt file.

pip install -r requirements.txt

Create an .env file in the root folder of the project with the following variables:

DEBUG=True
FLASK_ENV=development
FLASK_APP=exquisite_branch

Before running the app for the first time, be sure to initialize the database. Watch out: this will delete the previous instance of the database along with its contents!

flask init-db

After initializing the database you can run the flask application

flask run

Overview

Exex saves contents in a database, and join them together in a branching version of the exquisite corpse.

The original exquisite corpse data structure is something similar to a linked list, where every drawing is connected to the previous one. Contents in exex are saved in a database with the same principle.

Diagram with the situationship of the entries

Each entry in the database has the following properties:

  • id: a unique identifier for every entry
  • branch: a random name for the excerpt
  • parent: the random name of the previous excerpt
  • content: the actual content of the writings
  • username: the author of the excerpt

When generating the display page, every entry look up its parent property to position itself after that.

Mhh should rewrite this better bc is super convoluted ahah.