This tool allows you to render a nice web page representation of a Relationship Menu you filled out with one or multiple partners / friends / colleagues / whatever.
It is relatively easy to modify the categories and items included. To render a page you do need to edit some json
files at the moment though so it might not be completely trivial to use for everyone.
Relationship menus are a great tool that can help you and another person get clear on what exactly you want to share in your relationship. This tool was heavily inspired by this document and the The Relationship Anarchy Smorgasbord. You can find a neat Podcast about the general concept here.
- Enter the
databases
directory and duplicate theexample
folder. - Name your new folder as you see fit, for example, after the people included in the menu. Inside the folder you find two files:
empty.json
: A blank template for a relationship menu.filled_out.json
: The same document but filled with some placeholder data.
- You can have multiple menu files in this folder (for example to keep a history of the changes). Each files does need to have a different
document_version
number, the file name is irrelevant to the script. - Look at both files to get a feel for how you need to fill them out. When you feel comfortable you can delete the
filled_out.json
rename theempty.json
to something likeversion_1.json
and start filling it out with another person.
The data format for storing a menu currently looks like this:
{
"last_update": "2023-01-02T16:26:56.691002",
"document_version": 1.0,
"people": [
"Person 1",
"Person 2"
],
"menu": [
{
"name": "Some Category",
"items": [
{
"name": "Some item in this category",
"icon": null,
"note": null
},
{
"name": "Some other item",
"icon": null,
"note": null
}
]
},
{
"name": "Some other category",
"items": [
{
"name": "Some item",
"icon": null,
"note": null
},
{
"name": "Another item",
"icon": null,
"note": null
}
]
}
],
"schema_version": 1.0
}
last_update
: is a timestamp in ISO 8601 format.
document_version
: The revision of your menu. You can, for example, have an older version of your menu with an older version number (for example, 1.0) and a newer version with a higher version number (for example, 1.5) in two separate files that are then both viewable on the rendered web page.
people
: An array of the people that filled out the menu. Can also include more than two people.
menu
: An array containing the actual menu data, see below.
schema_version
: Version of the data schema used, you shouldn't need to change this.
- Possible values for
icon
aremust
|like
|maybe
|off-limit
the default ofnull
will render as a not filled out item. - The
note
field allows you to add a note to an item, for example, to clarify what you have decided on.
- Your computer needs a Python 3 interpreter to use this tool.
- Install the required libraries listed in
requirements.txt
- In the
main.py
file adjust theRELATIONSHIP_MENU_PATH
variable. Change the partexample
to the name you gave your menu folder. - Execute the script in a terminal or in your IDE.
- The
build
folder will include your rendered menu.
Maybe I will add an option to actually edit the menus without having to edit json files at some point but if I am honest I probably wont... :D