Persists the branding/commercial/infrastructure work (previously only in chat and on the live site) into version control. What changed: - docs/naming.md: due-diligence and the decision to brand the product Nightjar (OpenScribe domain/GitHub/trademark collisions; alternatives screened; why Nightjar). - docs/hosted-service.md: the commercial model - plan tiers (Self-host / Cloud Starter / Cloud Pro / Private), indicative pricing, backend mapping, and the build-to-sell roadmap (metering, billing, provisioning, DPA). - docs/infrastructure.md: backend infra plan. Primary option = self-host on the 3x Minisforum MS-02 cluster (one with an RTX 3050 6GB) fronted by a Cloudflare Tunnel, with node roles, the 3050 capacity reality, caveats, and a Hetzner cloud fallback. Provision-later. - site/: reproducible marketing-site source - block content for all 11 pages (rebranded to Nightjar), the navigation, the Contact Form 7 config (honeypot), the ApisCP SOAP helper (tools/apiscp.php, no secret), and a README on how the WordPress site is built and managed via the API. - state/: DECISIONS (Nightjar rebrand, hosted service, MS-02 backend), PROJECT (brand + commercial section), TODO (rename decision, trademark, mailbox, pricing, hosted-service build, infra provisioning). Why: - User asked to save everything to the repo. Captures the product rebrand, the commercialisation plan, and the infrastructure decision so a cold session has the full picture. Notes: - The repo is still named `openscribe`; the product/brand is Nightjar. A full codebase rename is deferred (tracked in TODO + docs/naming.md). - No secrets committed: the ApisCP API key is read from a local scratch file, never the repo. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| pages | ||
| tools | ||
| cf7-form-config.php | ||
| README.md | ||
Nightjar marketing site
The content and tooling for the public marketing site at
https://nightjar.12hobbies.studio (the commercial front for the project; see
../docs/hosted-service.md).
The live site is WordPress on ApisCP (howler.qsplace.co.uk, EU/Hetzner), on the
12hobbies account as a subdomain. This directory is the reproducible source: the page
content, navigation, contact-form config, and the tooling used to push it all through the
ApisCP API.
Layout
pages/ Block-editor content for each page (one file per page)
home.html front page (landing)
how-it-works.html workflow + architecture diagrams (inline SVG) + detailed steps
bring-your-own-ai.html
guides.html hub linking the three tutorials
connect-your-ai.html tutorial: per-provider .env config
self-host-the-server.html tutorial: install -> configure -> run
build-the-device.html tutorial: parts, flashing, case (+ device illustration)
open-source.html hosted-plans.html about.html contact.html
_navigation.html the header navigation (wp_navigation block content)
cf7-form-config.php Contact Form 7 form template + mail config (honeypot spam protection)
tools/apiscp.php SOAP helper that drives ApisCP / wp-cli remotely (see below)
Images are inline SVG inside Custom HTML blocks (no uploads, no SVG-upload security concerns; the device illustration has an animated status light).
How the site is managed
WordPress is driven remotely through the ApisCP SOAP API via tools/apiscp.php, which
exposes wordpress_cli (wp-cli) and file operations. Page content is pushed to a temp
file on the server and applied with wp post update <id> <file> (avoids command-length
and quoting limits). Example:
php -d extension=openssl -d extension=soap tools/apiscp.php \
file_put_file_contents /var/www/<docroot>/.tmp.html '@@pages/home.html' true false
php -d extension=openssl -d extension=soap tools/apiscp.php \
wordpress_cli 'post update <id> /var/www/<docroot>/.tmp.html' '[]' nightjar.12hobbies.studio ''
Secrets
tools/apiscp.php reads the ApisCP API key from a local scratch file
(C:/temp/claudetemp/apiscp.key) that is never committed. Supply the key out-of-band
and keep it out of the repo. The .gitignore already excludes secrets.
Site facts
- Comments are disabled site-wide (Disable Comments plugin + closed defaults).
- The contact form is Contact Form 7 with a hidden honeypot field for spam protection; every submission is also stored in the database via Flamingo.
- TLS is Let's Encrypt (valid cert for
nightjar.12hobbies.studio). The oldopenscribe.12hobbies.studiohost redirects here.