# nooo-hbsc

The new homebrewserver.club website :)

> https://homebrewserver.club/

## Build the site locally

### Get a local copy

```bash
$ git clone --recurse-submodules https://git.vvvvvvaria.org/varia/nooo-hbsc
```

### System requirements

Install the system requirements:

```bash
$ apt install -y python3 python3-dev python3-venv
```

### Python requirements

Then create a virtual environment and activate it:

```bash
$ python3 -m venv .venv
$ source .venv/bin/activate
```

Then install the requirements:

```bash
$ pip install -r requirements.txt
```

### Generating the site

Generate the content and run the server:

```bash
$ pelican content
$ pelican --listen --relative-urls
```

Then the site is available at the following URL:

> http://localhost:8000

## Working with the site

* Website articles and content are in [content](./content)
* The website theme is in [themes/homebrewtheme](./themes/homebrewtheme)
* Images are stored in [content/images](./content/images)
* Configs are stored in [content/downloads](./content/downloads)

While working on the site, you can run the following:

```bash
$ pelican --autoreload --listen --relative-urls
```

### Writing drafts

Use `Status: draft` in the article metadata. When the site is generated, the
`output/drafts` folder will be created with your new draft article. This allows
us to work on new articles and still store the pages here in the repository.

## Deploying the site

We have a Git hook setup, so just push as you would as normal:

```
$ git push origin master
```

Details for maintaining the hook on the Varia server are:

* We have cloned the site in `/srv/gitea/clones/homebrewserver.club`
* We have create a hook deployment script in `/srv/gitea/gitea-repositories/varia/homebrewserver.club.git/hooks/post-update`

How it works: when someone runs a `git push origin master`, the script in the `post-update` will run after the updating is finished. In this script, we run all the steps to publish the site as per usual. Such as running `pip install -r requirements.txt` and `pelican` to generate the new output.
