[ICO]NameLast modifiedSizeDescription
[PARENTDIR]Parent Directory  -  
[DIR]api/2023-06-09 12:20 -  
[DIR]build/2023-06-09 12:56 -  
[DIR]components/2023-06-09 12:20 -  
[DIR]config/2023-06-09 12:20 -  
[DIR]extensions/2023-06-09 12:20 -  
[DIR]node_modules/2023-06-09 12:51 -  
[DIR]public/2023-06-09 12:20 -  
[TXT]README.md2023-06-15 06:34 7.4Kf12eb36 documentaiton updates [كارل مبارك]
[IMG]favicon.ico2023-06-09 12:20 3.6K7375cab EXHIBTION: fix overflow ellipsis cutoff [كارل مبارك]
[   ]package-lock.json2023-06-09 12:20 573K7375cab EXHIBTION: fix overflow ellipsis cutoff [كارل مبارك]
[   ]package.json2023-06-09 12:20 1.0K7375cab EXHIBTION: fix overflow ellipsis cutoff [كارل مبارك]
[   ]yarn.lock2023-06-09 12:20 466K7375cab EXHIBTION: fix overflow ellipsis cutoff [كارل مبارك]
# Backend

For the content management system (CMS), we are using [Strapi](https://strapi.io/) .    
The CMS is accessible at https://archiveofbelonging.org.  

## Using the CMS
### 🌍 Context 

The CMS is hosted on this server which is provided by [Greenhost](https://greenhost.net/). For now, I have dedicated **5GB** of storage for this. If you would like more storage, please let me know.

There are two types of users on Strapi: admin and author/editor. As admin, Ilja and I can create content types, update the infrastructure, change the API, and create and delete users. As author and editor, you can upload files, create content, edit it, publish it, unpublish it and delete it.

You have recieved a link from me that will direct you to a page where you can authenticate your user. Please store your credentials.

### 🖥️ Environment 

Once authenticated, you will be presented with the content management environment. On the top right, there are the buttons to log out and change the interface language. On the left side, there is a navigation menu with all the single types and collection types (more info below). The rest of the interface is the editing area. It changes based on the part of the navigation that you are in.

### 📄 Single Types 

In Strapi, Single Types are only one entry.

Our only single entry in this project is the **Info** entry. It contains fields for the About page, a brief description for the Collections page, and a link to the public github repository where the code that runs the site will live. 

Fields that have an arabic language counterpart are labelled with the field name in addition to the letters "AR". For exmaple: the 'AboutCollections' field contains a brief description for the collections page in English and 'AboutCollectionsAR' is for the same text in Arabic. This rule is followed everywhere in this project where a translation to Arabic is appropriate.

### 🗄️ Collection Types

In Strapi, Collection Types (not to be confused with our own 'Collections') contain many entries. When viewing a collection, you can view, filter, sort, search, create, edit, publish, unpublish or delete an entry. 

Any data-type in the project that can be enumerated as a list is handled as a collection type:

#### Resources

These are the all the resources in the archive. Most fields are self-explanatory, and no arabic traslations are mandatory in this content-type. A few fields deserve an explanation:

  - — **slug**: The slug is, in general, the most important field in any entry on the CMS. Slugs are what the website will construct unique URLs with. In the case of resources, the slug is autogenerated based on the Organization field.
  - — **Files**: In case a resource represents a file or collection of files such as a pdf document, manual or book, as opposed to an organization or initiative, the files should be added to this field and will be displayed on the website as little icons instead of an external link to an organization. [Here is an example.](https://archiveofbelonging.org/resources/uel)
  - — **Tags** & **Locations**: These fields, somewhat hidden on the right will display a list of tags and locations to choose to add to a resource. These fields are bi-directionally linked to the Tags and Locations content-types (explained further in this document). Many resources can belong to many tags and locations and many tags and locations can belong to many resources. This is the core filtering system used on the website.
  - — **Media**: This field is dedicated to any media a resource could have, such as a logo, banner, video, etc... The uploaded media must be either a video, image or audio file. *To appropriately credit uploaded media, please use the 'Caption' field when uploading*. This text will be displayed on the website when necessary. It's important to note that the first uploaded file will be used as a cover regardless of it's type. The order of uploaded media is reflected on the front-end and sadly cannot be changed without removing all the files from the field and re-adding them in the desired order.

#### Artworks

These are all the artworks in the archive.  On the website, they are combined with the resources into one list. Again most fields are self-explanatory and follow the same rules as the Resources content-type. Some fields to note:

  - — **Hometown**: Artworks additionally have a Hometown relational field, also directly linked to the Locations content-type. On the front-end, it is combined together with the location field.
  - — **Align**: The horizontal alignment of an artwork on the website when it is shown in a list.
  - — **Rating**, **Level**, **StartYear**, and **EndYear**: These are fields that are not brought into the website but could provide valuable metadata and could eventually find a public place in the future.

#### Tags & Locations

These are the content-types with which the resources and artworks have bi-directional relationships with. There are some extraneous fields that could be used later but some things to note are:

  - — Tags and locations must be created before an artwork or resource links to them, or they will not show up on the lists
  - — Most important: Please include an arabic translation for the Name field. This is not mandatory but will make the header of the website look more consistent in either language. These are most of the time easily and correctly translatable using an online service.

#### Collections

Although filtering using tags and locations is important, a more important way of orgaizing an archive is curation. The Collection content-type is a printable, curated, ordered list of resources and artworks that can be created in Strapi or on the website. Visitors making a collection on the website can also choose to submit it to Strapi for revision and publishing. The fields are:

  - — **Title**: Mandatory name of the collection.
  - — **Description**: Optional description of the collection.
  - — **Author**: Optional author of the collection.
  - — **Items**: A dynamic zone where resources and artworks can be added and manually ordered.
  - — **IsCurrentExhibition**: An on/off switch. The first collection with this field marked "on" will be used as the exhibition on the website. There should only be one collection with this field marked "on".

### ✏️ Editing 

All entries have different fields. Most of them are self-explanatory.

Some fields support **rich text** and are edited in Markdown. There is a built-in editor for rich text fields that will provide all the formatting options as buttons. When you select text and click the 'Bold' button, it will create the syntax that will make that text bold. To see how a rich text is going to be formatted on the website, you can click the **Switch to Preview** button on the upper right corner of the rich text editors.

Markdown cheat sheet: https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet/.

When you want to **include an image in a rich text**, you can click the image icon on the editor and either choose a previously uploaded image, or upload a new one. This will paste a URL to the image in the text. You can see this in action on the entries that are already there.

If you'd like to **include a video in the a rich text**, please upload it to a third party provider and paste the appropriate iframe code into the rich text editor.

Please upload as many files as you like. The upload limit is set to 400mb per file at the moment.