Pest Nocturne — WSU EM019 study suite (freemium BTCPay paywall)

This commit is contained in:
drjones
2026-09-01 01:37:39 -07:00
commit f9242710eb
6 changed files with 2620 additions and 0 deletions

41
README.md Normal file
View File

@@ -0,0 +1,41 @@
# Pest Nocturne 🪲
A midnight specimen-cabinet study suite for the **WSU EM019** pest management
certification exam. The complete *Study Manual for Pest Management
Professionals* rebuilt as an interactive, illustrated single-page app.
## Live
**https://nocturne.thetempleofdoom.com**
## What's inside
- **Field guide** — all 13 chapters with illustrated plates
- **Identification keys** — branching keys, walked one couplet at a time
- **House faults** — 22 points of faulty construction/maintenance, in order
- **Flashcards** 🔒 — premium
- **Practice exam** 🔒 — premium (scored, with the official answer key)
- **Glossary** — every defined term, searchable as you type
## Monetization
Freemium: the field guide, keys, and house faults are free. **Flashcards and
the practice exam are a $5 Bitcoin unlock** via BTCPay.
- BTCPay store: `FDT6DHWEaA7DF5WFePkp4pufgQ9yy1G6JfzTCwey1jYn`
- Price: $5 USD (on-chain BTC)
- Flow: `/unlock` → BTCPay invoice → `/webhook/btcpay` (InvoiceSettled) → client polls `/api/status` → unlocks
## Stack
- Single self-contained `index.html` (vanilla JS SPA, no build step)
- Flask (`app.py`) for the paywall + BTCPay webhook
- nginx reverse proxy → Flask :5000
- SQLite (`orders.db`) for order state
## Deploy
- Proxmox LXC CT **117** (`nocturne`) @ 10.30.20.234
- systemd `nocturne.service`, nginx `sites-enabled/nocturne`
- Cloudflare tunnel `thetemple-fleet` (`1aeb1ac0`), ingress → `:80`
## Files
- `index.html` — the study suite + injected paywall gate + BMAC footer
- `app.py` — Flask backend (BTCPay invoice, webhook, unlock status)
- `inject.py` — one-shot script that injects the paywall + footer into the HTML
- `nocturne.service` / `nocturne.nginx` — service + nginx config