feat: refactor to remove www

resolves #4
This commit is contained in:
Chris Milne 2026-04-24 12:47:12 +01:00
parent 2d84b9056a
commit a1cca9205f
322 changed files with 1 additions and 30 deletions

View file

@ -0,0 +1,10 @@
---
slug: butter-box-connectivity
title: Butter Box Connectivity
authors: [irl]
tags: [radio,research]
---
We have just wrapped up a project with the Guardian Project team exploring options for connectivity to allow for updates to software and content on the Butter Box and for communications between users of multiple Butter Boxes. We have explored two technologies: LoRA and WiFi HaLow.
[Read the full post on the SR2 blog](https://www.sr2.uk/posts/2026-butter-box-connectivity)

View file

@ -0,0 +1,72 @@
---
slug: contentpack-podcast
title: 📦 Content Pack - Podcast Delivery Without Internet
authors: [nxf99]
tags: [contentpack]
---
We have released a [small, self-contained sample podcast content pack](https://guardianproject.dev/butter/contentpack-sample-podcast), built on a webpage and RSS feed from [Guardian Project](https://guardianproject.info/podcast). This repository is intended as an example "content pack": a minimal, portable bundle of everything needed to host and distribute a podcast, including episode audio, show notes, a landing page, and a standards-compliant feed.
[**DOWNLOAD SAMPLE PODCAST CONTENTPACK**](https://guardianproject.dev/butter/contentpack-sample-podcast/releases/tag/0.0.2)
## What's inside
- **`index.html`** : A simple, styled landing page that lists each episode with inline audio playback.
- **`podcast.xml`** : An RSS 2.0 feed with iTunes podcast extensions, suitable for submission to podcast directories and use in podcast players.
- **`posts/*.md`** : Per-episode show notes in Markdown (YAML frontmatter holds the episode metadata).
- **`posts/*.mp3`** : The episode audio files, colocated with their show notes.
- **`build.sh`** : Regenerates `index.html` and `podcast.xml` from the contents of `posts/`.
{/* truncate */}
## Using it
Because everything in `index.html` is relative-linked, you can serve this site from a folder on a USB drive plugged into a ButterBox device.
To subscribe in a podcast client, point it at the hosted URL of `podcast.xml`.
## Building `index.html` and `podcast.xml`
Both output files are generated from the markdown posts in `posts/` by `build.sh`. Run the script any time you add, remove, or edit a post:
```sh
./build.sh <baseURL>
```
The single required argument is the **absolute URL prefix where the mp3 files will be served**. It is only used for the `<enclosure url="...">` entries in `podcast.xml`, because RSS enclosures must be absolute URLs so podcast clients can download them without knowing where the feed lives. Everything else in the generated files (the RSS `<link>`, the `<audio>` players in `index.html`, and the link to the feed itself) stays relative, so you can still move the whole bundle around and serve it from any path.
### Example
If the files will be served from a USB drive called `usb-butter` plugged into a ButterBox, inside a folder named `engardepodcast`, run:
```sh
./build.sh http://butterbox.local/serve_file/media/usb-butter/engardepodcast/
```
Note that `butterbox.local` in the URL must match the configured hostname of your ButterBox. `butterbox.local` is the default, but if you have changed yours to, for example, `someotherbox.local`, use that hostname instead.
The script will produce `podcast.xml` with enclosures like:
```
http://butterbox.local/serve_file/media/usb-butter/engardepodcast/posts/ProofModeCaravan-English-Feb2024.mp3
```
and an `index.html` whose audio elements still use the relative `posts/<file>.mp3` path.
### How it works
For each `posts/*.md` file (sorted newest-first by filename date prefix), the script:
1. Parses the YAML frontmatter (`title`, `date`, `description`, `file`, `voices`, `keywords`, `duration`/`length`, `explicit`).
2. Looks up the referenced mp3 in `posts/` and reads its real byte size with `stat` for the RSS `length` attribute.
3. Picks whichever of the `duration`/`length` frontmatter fields actually looks like `HH:MM[:SS]` for `<itunes:duration>` (the two fields are used inconsistently across the sample posts).
4. Normalizes the `date` field into an RFC 822 `<pubDate>`.
5. Emits one `<item>` block into `podcast.xml` and one `<article class="episode">` block into `index.html`.
Adding a new episode is just a matter of dropping a new `YYYY-MM-DD-slug.md` file and its `.mp3` into `posts/` and re-running `build.sh`.
## License
All content in this repository (audio, show notes, webpage, and feed) is released under [Creative Commons Zero (CC0 1.0)](https://creativecommons.org/publicdomain/zero/1.0/). You may copy, modify, distribute, and use the material for any purpose, including commercial, without asking permission.

View file

@ -0,0 +1,25 @@
---
slug: contentpack-webxdc
title: 📦 Content Pack - WebXDC Offline Apps
authors: [nxf99]
tags: [contentpack]
---
[WebXDC apps](https://webxdc.org/) are marketed as "Secure mini apps for chats". They are supported by a variety of secure messagings apps, but primarily [Delta Chat](https://delta.chat/en/). As we recently added support to ButterBox for offline communication via DeltaChat and built-in ChatMail server, we though it made sense to also have a content pack for distributing an excellent collection of offline ready apps you can run inside your groups chats.
The content in this pack comes from webxdc.org and apps.testrun.org. All rights and permissions to the content are as stated on those sites and in their respective source code repositories.
[**DOWNLOAD WEBXDC CONTENTPACK**](https://guardianproject.dev/butter/contentpack-sample-webxdc)
{/* truncate */}
## How to Use
To use this content pack:
- Copy this folder onto a USB drive.
- Plug the USB drive into any ButterBox device.
- Access the content through the "Files" option on the ButterBox.
- Download any .xdc app file you would like to try.
- Share and run the downloaded app in any DeltaChat message.

View file

@ -0,0 +1,12 @@
---
slug: portal-improvements
title: Butter Box Portal Improvements
authors: [ana]
tags: [development,portal]
---
As part of our latest development project with the Guardian Project team, we have re-engineered the Butter Box portal interface. This post describes the design choices and improvements within the new portal.
Previously, the interface was a static site built with Jekyll, which offered no customisation options and was ill-suited for the portals dynamic requirements. It has now been replaced with a Python Flask application, a lightweight framework that allows developers to include only the necessary libraries, such as for localisation, minimising the applications footprint.
[Read the full post on the SR2 blog](https://www.sr2.uk/posts/2026-butter-box-portal/)

29
blog/authors.yml Normal file
View file

@ -0,0 +1,29 @@
nxf99:
name: Nathan
title: Director, Guardian Project
url: https://nathan.freitas.net
image_url: https://avatars.githubusercontent.com/u/30851?v=4
page: true
socials:
github: n8fr8
newsletter: https://nathan.freitas.net
fabby:
name: Fabby
title: Community Lead
image_url: https://avatars.githubusercontent.com/u/30851?v=4
trob:
name: Tiff
title: Project Coordinator
image_url: https://avatars.githubusercontent.com/u/30851?v=4
irl:
name: Iain
title: Radio Researcher
image_url: https://www.sr2.uk/team/images/irl.jpg
ana:
name: Ana
title: Lead Developer
image_url: https://www.sr2.uk/team/images/ana.jpg

19
blog/tags.yml Normal file
View file

@ -0,0 +1,19 @@
facebook:
label: Facebook
permalink: /facebook
description: Facebook tag description
hello:
label: Hello
permalink: /hello
description: Hello tag description
docusaurus:
label: Docusaurus
permalink: /docusaurus
description: Docusaurus tag description
hola:
label: Hola
permalink: /hola
description: Hola tag description