Public presentation
PHP templates render titles, descriptions, canonical URLs, navigation, structured data, curated persona pages, and accessible fallbacks.

Architecture & quality
Spiralist AI uses a lightweight PHP presentation layer, versioned JSON catalogs, custom CSS, and vanilla JavaScript modules. The architecture keeps public content crawlable while persona creation, sharing preparation, and export remain inspectable in the browser.
Each layer has a narrow responsibility and a reviewable contract.
PHP templates render titles, descriptions, canonical URLs, navigation, structured data, curated persona pages, and accessible fallbacks.
Same-origin JSON files provide 1,000 starting types, curated Persona Passports, configuration axes, recipes, and the local search index.
The active form lives in browser memory. One share-safe summary is written to local storage only after the user selects Save.
A limited Persona Passport object is encoded in the URL fragment. Memory, notes, prompts, and export files are excluded.
Copy, text, ZIP, and .uaix outputs are generated from current browser state with review guidance and package metadata.
Google Analytics loads only after opt-in and accepts only allowlisted events and non-content properties.
includes/header.php centralizes configuration, helpers, security headers, metadata, navigation, and route-specific script flags.
includes/functions.php normalizes clean and legacy routes, escapes output, builds canonical URLs, loads JSON once per request, and creates structured data.
The default creator exposes goal, working style, candidate reveal, and Passport. The legacy builder, wizard, axis matrix, and package controls remain inside Expert mode.
The viral module explicitly selects fields for serialization and constrains lengths, arrays, numeric ranges, lineage depth, and identifiers during decoding.
Only named funnel events and named parameters can reach the analytics API. Free text is never copied into event payloads.
The PHP shell accepts only GET and HEAD, adds CSP and security headers, and the Apache configuration blocks hidden project metadata and canonicalizes legacy routes.
A package is not complete until its public routes, interactions, exports, and privacy claims agree.
PHP lint, JavaScript syntax, JSON parsing, XML parsing, asset references, and forbidden-route checks.
Clean routes, curated persona routes, canonical tags, redirects, noindex private share page, and security headers.
Navigation, search, creator progression, Passport reveal, private link opening, remix, local save, quiz, comparison, and consent controls.
Text content, ZIP integrity, .uaix compatibility, filenames, manifest entries, and exclusion of private share-only assumptions.
Destination runtimes can still change behavior. Inspect the persona, the share boundary, and the exported files before external use.