Pest Nocturne — WSU EM019 study suite (freemium BTCPay paywall)
This commit is contained in:
41
README.md
Normal file
41
README.md
Normal 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
|
||||
Reference in New Issue
Block a user