From 01dcb5940e376f4b22eb95f64036014b0a04d527 Mon Sep 17 00:00:00 2001 From: Incentive Date: Sat, 18 Oct 2025 00:35:34 -0400 Subject: [PATCH] Update README --- README.md | 204 ++---------------------------------------------------- 1 file changed, 6 insertions(+), 198 deletions(-) diff --git a/README.md b/README.md index 2c06843..6e6d5c1 100644 --- a/README.md +++ b/README.md @@ -9,14 +9,13 @@ Relibre is a simple, free, and open-source landing-page generator—an alternati ## What you get - A clean, responsive, single-file HTML page for a release -- No trackers, no analytics, no lock-in -- Host it anywhere (object storage, GitHub/Gitea Pages, your own server, IPFS, etc.) -- Optional native desktop app (Go + WebKit webview) that can save directly to your **Downloads** folder +- No trackers, no analytics +- Host it anywhere (Neocities, object storage, GitHub/Gitea Pages, your own server, IPFS, etc.) +- Optional native desktop app (only Arch Linux and Flatpak supported for now) --- ## Quick start (static site) -This repo already contains `index.html` and the generator under `/ui`. Open locally: ```bash @@ -38,97 +37,21 @@ Relibre ships multiple compose variants so you can choose your reverse proxy. Al - `docker-compose.yml.caddy` - `docker-compose.yml.apache` - `docker-compose.yml.nginx` -- `proxy/` (proxy configs) -- `Dockerfile` (optional static Nginx serve; not required when using the variants above) +- `proxy/` +- `Dockerfile` -### Docker ```bash -# HAProxy -docker compose -f docker-compose.yml.haproxy up -d --build - -# Caddy -docker compose -f docker-compose.yml.caddy up -d --build - -# Apache -docker compose -f docker-compose.yml.apache up -d --build - -# Nginx -docker compose -f docker-compose.yml.nginx up -d --build -``` -Open: http://localhost:8080 - -### Podman -```bash -# If you have podman-compose: -podman-compose -f docker-compose.yml.nginx up -d --build - -# Or via podman directly (example for Nginx) -podman build -t relibre-web -f Dockerfile.web . -podman run --name relibre-web -d --rm -p 8081:80 relibre-web -``` - -> **Production note:** put a TLS-terminating proxy (Caddy/Traefik/HAProxy/Nginx) in front, or your existing edge/load balancer. These examples run HTTP only. - --- ## Native desktop build (Go webview app) -Builds a single executable that opens Relibre inside the OS webview (WebKitGTK on Linux, WebView2 on Windows, WKWebView on macOS). The app runs a tiny localhost server and can save the generated HTML directly to your **Downloads** folder. +Builds a single executable that opens Relibre inside the OS webview. The app runs a tiny localhost server and can save the generated HTML directly to your **Downloads** folder. ### Prereqs - **Arch:** `sudo pacman -S --needed base-devel go webkit2gtk gtk3 pkgconf` -- **Debian/Ubuntu:** - ```bash - sudo apt update - sudo apt install -y build-essential golang pkg-config libgtk-3-dev libwebkit2gtk-4.1-dev libsoup-3.0-dev - ``` -- **macOS:** Install Go (Homebrew is fine). WebKit is built-in. -- **Windows:** Install Go and the **WebView2** runtime (Win11 has it by default). - -> If your distro provides only `webkit2gtk-4.1.pc` and the module looks for `4.0`, you can locally add a compat symlink: > - Arch: `sudo ln -s /usr/lib/pkgconfig/webkit2gtk-4.1.pc /usr/lib/pkgconfig/webkit2gtk-4.0.pc` -> - Debian/Ubuntu: `sudo ln -s /usr/lib/x86_64-linux-gnu/pkgconfig/webkit2gtk-4.1.pc /usr/lib/x86_64-linux-gnu/pkgconfig/webkit2gtk-4.0.pc` ### Build -At the repo **root** (next to `index.html`, `ui/`, `images/`), add these files if they aren’t already present: - -`go.mod` -```mod -module relibre - -go 1.22 -``` - -`Makefile` -```makefile -APP=relibre-app - -.PHONY: deps run build clean -deps: - go get github.com/webview/webview_go@latest - go mod tidy - -run: - go run . - -build: - go build -trimpath -ldflags "-s -w" -o $(APP) - -clean: - rm -f $(APP) -``` - -`main.go` (excerpt – already in repo if you followed earlier steps) -```go -//go:embed index.html ui/* images/* -var content embed.FS - -// POST /save writes to ~/Downloads when running the native app -// (see main.go in the repo for full implementation) -``` - -Build & run: -```bash make deps make build ./relibre-app @@ -138,64 +61,7 @@ make build ## Arch Linux (AUR) packaging -You can publish two AUR packages: - - **`relibre`** – builds from source -- **`relibre-bin`** – installs a prebuilt binary from your Releases - -### From source (local PKGBUILD) -Create `PKGBUILD`: -```bash -pkgname=relibre -pkgver=0.1.0 -pkgrel=1 -pkgdesc="Native webview app to generate single-file landing pages for music releases" -arch=('x86_64') -url="https://git.circlewithadot.net/incentive/relibre" -license=('MIT') -depends=('gtk3' 'webkit2gtk' 'libsoup3') -makedepends=('go' 'git') -provides=('relibre') - -source=("${pkgname}::git+${url}.git#tag=v${pkgver}") -sha256sums=('SKIP') - -prepare() { - cd "${srcdir}/${pkgname}" - export GOPATH="${srcdir}/gopath" - export GOMODCACHE="${GOPATH}/pkg/mod" - go mod download -} - -build() { - cd "${srcdir}/${pkgname}" - export CGO_ENABLED=1 - go build -trimpath -ldflags "-s -w" -o relibre -} - -package() { - cd "${srcdir}/${pkgname}" - install -Dm755 relibre "${pkgdir}/usr/bin/relibre" - - install -Dm644 dist/com.circlewithadot.Relibre.desktop "${pkgdir}/usr/share/applications/com.circlewithadot.Relibre.desktop" - install -Dm644 dist/com.circlewithadot.Relibre.png "${pkgdir}/usr/share/icons/hicolor/512x512/apps/com.circlewithadot.Relibre.png" - - install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" -} -``` - -Build locally: -```bash -makepkg -si -``` - -Publish to AUR (once your AUR repo is created): -```bash -makepkg --printsrcinfo > .SRCINFO -git add PKGBUILD .SRCINFO -git commit -m "relibre ${pkgver}" -git push # to your AUR remote -``` --- @@ -203,67 +69,9 @@ git push # to your AUR remote Relibre works well as a Flatpak using the GNOME runtime (WebKitGTK included). -Create `com.circlewithadot.Relibre.yml` at repo root: -```yaml -app-id: com.circlewithadot.Relibre -runtime: org.gnome.Platform -runtime-version: '46' -sdk: org.gnome.Sdk -command: relibre -finish-args: - - --share=network - - --socket=wayland - - --socket=fallback-x11 - - --filesystem=xdg-download -modules: - - name: relibre - buildsystem: simple - build-commands: - - go env -w CGO_ENABLED=1 - - go mod download - - go build -trimpath -ldflags "-s -w" -o /app/bin/relibre - - install -Dm644 dist/com.circlewithadot.Relibre.desktop /app/share/applications/com.circlewithadot.Relibre.desktop - - install -Dm644 dist/com.circlewithadot.Relibre.png /app/share/icons/hicolor/512x512/apps/com.circlewithadot.Relibre.png - sources: - - type: dir - path: . -``` - -Also add: -- `dist/com.circlewithadot.Relibre.desktop` - ```ini - [Desktop Entry] - Type=Application - Name=Relibre - Comment=Generate single-file landing pages for music releases - Exec=relibre - Icon=com.circlewithadot.Relibre - Categories=AudioVideo;Utility; - Terminal=false - ``` -- `dist/com.circlewithadot.Relibre.png` (512×512 icon – you can copy `images/relibre_logo.png`) Build & run locally: ```bash flatpak install -y org.gnome.Platform//46 org.gnome.Sdk//46 flatpak-builder --user --install --force-clean build-dir com.circlewithadot.Relibre.yml flatpak run com.circlewithadot.Relibre -``` - -### Submit to Flathub (outline) -1. Ensure the app uses an **appstream** file: `dist/com.circlewithadot.Relibre.metainfo.xml`. -2. Host a signed source archive or tag (Git). -3. Fork the Flathub repo, add your manifest under `com.circlewithadot.Relibre`, open a PR. -4. CI will build and review; address any sandboxing requests (portals, permissions). - ---- - -## License -MIT — see `LICENSE`. - -## Contributing -PRs welcome! -- Features: templates, themes, icon sets, translations -- Packaging: help maintain Flatpak & AUR recipes -- Docs: quickstart guides for common hosts (Netlify, Pages, S3, IPFS) -