koopa-admin-log/configs/taler-ops-ng
Hernâni Marques f821dc0eb4
feat(tops): Taler Operations design previews (ng1–ng3)
Static previews on ports 9090–9092: DD 90 branding (Montserrat,
#0042B3, logo), FINMA sticky, no taler-ops-www build. ng1 landing,
ng2 step/amount sliders + tabs, ng3 classic mirror. Podman nginx,
bin/up.sh, Caddy snippet, /CHANGES notes for current site only.
2026-07-10 17:36:51 +02:00
..
bin feat(tops): Taler Operations design previews (ng1–ng3) 2026-07-10 17:36:51 +02:00
deploy feat(tops): Taler Operations design previews (ng1–ng3) 2026-07-10 17:36:51 +02:00
ng1 feat(tops): Taler Operations design previews (ng1–ng3) 2026-07-10 17:36:51 +02:00
ng2 feat(tops): Taler Operations design previews (ng1–ng3) 2026-07-10 17:36:51 +02:00
ng3 feat(tops): Taler Operations design previews (ng1–ng3) 2026-07-10 17:36:51 +02:00
README.md feat(tops): Taler Operations design previews (ng1–ng3) 2026-07-10 17:36:51 +02:00

Taler Operations WWW — design previews (koopa)

Experimental static previews for a redesign of taler-ops.ch.
Content is inspired by taler-ops-www (git.taler.net/taler-ops-www).

Source branches (taler-ops-www)

Branch Meaning
stable Stable website (classic production-oriented tree)
master Ongoing development

This preview stack does not build taler-ops-www (Jinja/Parcel).
If the upstream tree is old, incomplete, or fails to build — we do not build it.

  • ng1 / ng2: hand-crafted static HTML in this repo
  • ng3: optional HTTP mirror of live classic site (or a tiny fallback page)

Ports (9090+)

Host Variant Port Container
tops.ng1.hacktivism.ch Taler DD 90 branding (Montserrat, #0042B3) 9090 koopa-tops-ng1
tops.ng2.hacktivism.ch DD 90 + step/amount sliders 9091 koopa-tops-ng2
tops.ng3.hacktivism.ch Classic / stable-era look 9092 koopa-tops-ng3

FINMA

ng1 and ng2 keep a sticky, always-visible FINMA disclaimer (not supervised by FINMA; escrow not deposit-insured; segregated account).
ng3 uses the classic site wording when mirrored, or the same disclaimer on the fallback page.

Deploy on koopa

Copy this tree to the host, then run the script (rootless podman as hernani):

# from your laptop (example)
scp -r configs/taler-ops-ng hernani@koopa:~/koopa-tops

# on koopa
cd ~/koopa-tops
chmod +x bin/up.sh
./bin/up.sh                 # start :9090 :9091 :9092
./bin/up.sh status
./bin/up.sh --refresh-classic   # re-mirror live taler-ops.ch → ng3 (no build)
./bin/up.sh down

Smoke without Caddy:

curl -sS -o /dev/null -w "%{http_code}\n" http://127.0.0.1:9090/
curl -sS -o /dev/null -w "%{http_code}\n" http://127.0.0.1:9091/
curl -sS -o /dev/null -w "%{http_code}\n" http://127.0.0.1:9092/

Caddy (host)

Snippet: deploy/Caddyfile.snippet

# 9090 tops ng1 | 9091 tops ng2 | 9092 tops ng3

tops.ng1.hacktivism.ch {
	header Alt-Svc "clear"
	reverse_proxy 127.0.0.1:9090 {
		header_up Host {host}
		header_up X-Forwarded-For {remote_host}
		header_up X-Forwarded-Proto {scheme}
	}
}

tops.ng2.hacktivism.ch {
	header Alt-Svc "clear"
	reverse_proxy 127.0.0.1:9091 {
		header_up Host {host}
		header_up X-Forwarded-For {remote_host}
		header_up X-Forwarded-Proto {scheme}
	}
}

tops.ng3.hacktivism.ch {
	header Alt-Svc "clear"
	reverse_proxy 127.0.0.1:9092 {
		header_up Host {host}
		header_up X-Forwarded-For {remote_host}
		header_up X-Forwarded-Proto {scheme}
	}
}

Also add the three hostnames to the existing HTTP→HTTPS redirect site list, then:

sudo caddy validate --config /etc/caddy/Caddyfile
sudo systemctl reload caddy

DNS: tops.ng1, tops.ng2, tops.ng3 under hacktivism.ch → koopa (same as other public vhosts).

Layout

configs/taler-ops-ng/
  README.md                 ← this file
  bin/up.sh                 ← run on koopa
  deploy/compose.yml        ← podman compose
  deploy/Caddyfile.snippet
  ng1/index.html            ← design preview
  ng1/CHANGES/index.html    ← /CHANGES
  ng2/… · ng3/…             ← same; ng3 also mirror/fallback

/CHANGES

Each preview serves a short change log at /CHANGES/ (ng1, ng2, ng3).

Design notes

  • ng1: GNU Taler branding per DD 90 / DD 66 (Montserrat, primary #0042B3, official logo).
  • ng2: same DD 90 tokens as ng1; step carousel + amount range slider + topic tabs.
  • ng3: classic production look via mirror; no Parcel/Jinja build pipeline.