# lumbung.space

[![Build Status](https://drone.autonomic.zone/api/badges/ruangrupa/lumbung.space/status.svg?ref=refs/heads/main)](https://drone.autonomic.zone/ruangrupa/lumbung.space)

![lumbung.space logo](https://lumbung.space/img/alt-lumbung-logo.jpeg)

> lumbung.space is an online platform by and for the lumbung-interlokal and lumbung artists. Many of the artists and collectives invited for documenta fifteen are located far away from each other, with their own contextual realities and vulnerabilities. To be able to work together over such distances, the act of documenting the process, writing together, and keeping each other informed within the network is one of the most important parts of the process of building the lumbung. This process is known as harvesting. Thus, lumbung.space was made to provide a number of tools and a collective publishing outlet for this diverse network to experiment and share the collective processes through harvests. Like a vibrant archive and a digital living room, it allows connection, support, and sharing of knowledge. Learn more on [lumbung.space](https://lumbung.sace)...

## Technical FAQ

### How does the CI/CD work?

The [`.drone.yml`](./.drone.yml) triggers a build on [drone.autonomic.zone](https://drone.autonomic.zone/ruangrupa/lumbung.space) of the [`Dockerfile.hugo`](./Dockerfile.hugo) and the [`Dockerfile.scripts`](./Dockerfile.scripts) and then deploys the [`compose.yml`](./compose.yml) stack using `docker stack deploy`.

### How often is the content regenerated?

See the `sleep ...` statements in the [`compose.yml`](./compose.yml).

### How do I see if content generation is working?

(requires `lumbung.space` docker context)

- `docker service logs -f beta_lumbung_space_peertube`
- `docker service logs -f beta_lumbung_space_calendar`
- `docker service logs -f beta_lumbung_space_feed`

Where `beta_lumbung_space_<service-name>` and you see the service name in the [`compose.yml`](./compose.yml).

### How do I add a feed?

Add your RSS feed URL to [`feeds_list.txt`](./feeds_list.txt) and don't forget [this deploy step](https://git.autonomic.zone/ruangrupa/lumbung.space#deploy-a-new-feeds_list-txt).

### How do I wipe all the generated content?

(requires `lumbung.space` docker context)

`docker exec -it $(docker container ls -q -f name=beta_lumbung_space_app) bash -c "rm -rf /src/content/*"`

## Hacking

### Generate the site

[Install Hugo](https://gohugo.io/getting-started/installing/) and `hugo serve --watch`

### Generate `lumbung[dot]space` posts

Do this manually first:

```
mkdir -p content
python3 -m venv .venv && source .venv/bin/activate
pip install git+https://git.autonomic.zone/ruangrupa/konfluks

export CALENDAR_URL="https://cloud.lumbung.space/remote.php/dav/public-calendars/WbnHM8YdCkKT6bcT?export"
export OUTPUT_DIR=content/calendar
konfluks-cal

export OUTPUT_DIR=content/tv
konfluks-vid

export OUTPUT_DIR=content/shouts
konfluks-feed  # reads ./feeds_list.txt

export OUTPUT_DIR=content/social
export MASTODON_AUTH_TOKEN=foobar
konfluks-hash
```

Afterwards, you can automatically run it with `make gen`.

After a `git pull`, you may need to run `pip install git+https://git.autonomic.zone/ruangrupa/konfluks` again.

### Manually deploying new images

- `docker login -u decentral1se -p $(logins/dockerhub/decentral1se)`
- `make push-hugo`
- `make push-scripts`

### Manually deploy the site

(requires `lumbung.space` docker context)

- `make deploy`

### Deploy a new `feeds_list.txt`

Increment the `_v<n>` (e.g. `v1` -> `v2`) in [`compose.yml`](./compose.yml) `configs` to avoid any deployment error.

### Adding a leaflet map to a page

To add a new leaflet map use the shortcode:
```
{{< map geoJson="data/geojsonContributors.json">}}
```
This way you can display a map on any page with any data.

To add data to the map, add a new json file to the `data/` directory and use the [geojson datascructure](https://geojson.org/) in the json file.
Then point the `geoJson="data/newfile.json"` in the shortcode to the new file.

If you wanna display new test in the tooltips just add a new property key/value.

e.g.

```
      "properties": {
        "a": "new value",
      }
```
One catcha is that Javascipt always output the order of the object in alfabetic order, there is nothing to do about this.

Key names `groupName` and `listOfNames` are reserved.
This will display it in the way it does now on the map
e.g.
```
"properties": {
  "groupName": "The Question of Funding",
   "listOfNames": [
     "Adele Jarrar",
     "Amany Khalifa",
     ]
}
```
So just to be clear if you want extra value under it, give the key name a letter that is after the `l` in the alfabet.
e.g.
```
"properties": {
 "groupName": "The Question of Funding",
  "listOfNames": [
     "Adele Jarrar",
     "Amany Khalifa",
    ],
  "m": "value under the list"
}
```

The new added value will alway be displayed the same and will be in a `<p>` tag.

