From 393d982d0468a6e6b01077d33a785a4b5322151b Mon Sep 17 00:00:00 2001 From: Will Anderson Date: Wed, 29 Apr 2026 16:59:57 -0500 Subject: [PATCH] Add integrated checkout, child safety section, and content polish - checkout.el: Custom Stripe Payment Element page at /checkout?plan=... - safety.el: Hard Bell and emergency routing architecture section - main.el: Wire checkout + safety, /api/payment-intent, STRIPE_PUBLISHABLE_KEY - enterprise_terms.el: Add nav bar (was missing, page had no navigation) - styles.el: Checkout buttons now link to integrated page, not hosted Stripe - El runtime: Auto-detect HTML responses, serve text/html vs application/json - footer.el: Wordmark image centered above "Built Different." tagline - environmental.el: Replace SQLite with custom on-device storage - enterprise.el: Replace SQLite with custom on-device storage - pricing.el: Local models degraded performance note near Ollama feature - about.el: "left home at fifteen", remove programming language mention --- src/about.el | 4 +- src/checkout.el | 427 ++++++++++++++++++++++++++++++++++++++++ src/enterprise.el | 2 +- src/enterprise_terms.el | 13 ++ src/environmental.el | 4 +- src/footer.el | 4 +- src/main.el | 41 ++++ src/pricing.el | 1 + src/safety.el | 76 +++++++ src/styles.el | 24 +-- 10 files changed, 567 insertions(+), 29 deletions(-) create mode 100644 src/checkout.el create mode 100644 src/safety.el diff --git a/src/about.el b/src/about.el index 108454c..7f871ba 100644 --- a/src/about.el +++ b/src/about.el @@ -36,7 +36,7 @@ fn about_page() -> String { \"Will

- I grew up in Fort Smith, Arkansas, in the kind of instability where home is a moving target — roughly thirty addresses before I was fifteen, parents struggling with addiction, the material precarity that comes with all of that. I left when I was old enough to go, stayed with friends until I finished high school, found my way to college. At fourteen I'd already found software, writing C++ at the public library because it was the first thing in my life that responded to precision with correctness, and that property turned out to matter more to me than almost anything else. + I grew up in Fort Smith, Arkansas, in the kind of instability where home is a moving target — roughly thirty addresses before I was fifteen, parents struggling with addiction, the material precarity that comes with all of that. I left home at fifteen, stayed with friends until I finished high school, found my way to college. At fourteen I'd already found software, writing C++ at the public library because it was the first thing in my life that responded to precision with correctness, and that property turned out to matter more to me than almost anything else.

@@ -84,7 +84,7 @@ fn about_page() -> String {

What I built

- Neuron is what I built in response to that. Not a startup in the traditional sense — no team, no funding, no press release — one person, nearly two years of work, and a conviction that this can be done differently. I wrote the programming language the core runs in, I wrote the memory architecture, I built the inference infrastructure, because the tools that existed weren't sufficient for what I was trying to build and so I built those too. + Neuron is what I built in response to that. Not a startup in the traditional sense — no team, no funding, no press release — one person, nearly two years of work, and a conviction that this can be done differently. I wrote the memory architecture, I built the inference infrastructure, because the tools that existed weren't sufficient for what I was trying to build and so I built those too.

Use it long enough and you'll understand why I couldn't have gotten there on top of existing infrastructure. Some things have to be built from the ground up to be built right. diff --git a/src/checkout.el b/src/checkout.el new file mode 100644 index 0000000..ba9cd6c --- /dev/null +++ b/src/checkout.el @@ -0,0 +1,427 @@ +// checkout.el — Integrated Stripe checkout page. +// +// Uses Stripe Payment Element (not hosted checkout) so the entire +// purchase experience lives on neurontechnologies.ai. The page is +// designed to match the Neuron brand — navy, clean, no Stripe chrome. +// +// Flow: +// 1. GET /checkout?plan=founding|professional +// 2. Page JS calls POST /api/payment-intent → { client_secret, publishable_key, plan } +// 3. Stripe Payment Element mounts into #payment-element +// 4. User fills name, email, card — submits +// 5. stripe.confirmPayment() → redirects to /marketplace/success + +fn checkout_page(plan: String, pub_key: String) -> String { + let is_founding: Bool = str_eq(plan, "founding") + + let plan_name: String = if is_founding { "Founding Member" } else { "Professional" } + let plan_price: String = if is_founding { "$199" } else { "$19 / month" } + let plan_desc: String = if is_founding { + "Pay once. Neuron inference forever. No subscription, ever." + } else { + "Full access. Neuron inference — cheaper than what you're paying now." + } + let plan_cadence: String = if is_founding { "one-time" } else { "billed monthly" } + + let features_html: String = if is_founding { + "

  • Neuron inference — priced below competitors, forever
  • +
  • Everything in Professional — forever
  • +
  • Never pay again — lifetime updates included
  • +
  • Founding member badge in the app
  • +
  • Private community — direct line to the team
  • +
  • Shape the roadmap — your votes carry more weight
  • +
  • Beta features before general release
  • +
  • Name in the credits
  • " + } else { + "
  • Neuron inference — metered, priced below OpenAI and Anthropic
  • +
  • Persistent memory — never resets
  • +
  • Unlimited projects
  • +
  • Full plugin marketplace
  • +
  • IDE, Slack, and more integrations
  • +
  • Early access to new features
  • " + } + + return " + + +
    +
    + + +
    +

    Your order

    + +
    +

    " + plan_name + "

    +

    " + plan_desc + "

    +
    + " + plan_price + " + " + plan_cadence + " +
    +
    + +
    + +
      + " + features_html + " +
    + +

    + Your data stays yours. Runs locally. No telemetry. +

    +
    + + +
    +

    Payment

    + +
    + +
    +
    + + +
    +
    + + +
    +
    + +
    +
    + +
    Loading payment form…
    +
    +
    + +
    + + + +

    + + + + + Secured by Stripe  ·  256-bit TLS  ·  PCI DSS compliant +

    + +
    +
    + +
    +
    + + + + + + + +" +} diff --git a/src/enterprise.el b/src/enterprise.el index 713bc54..ba8be77 100644 --- a/src/enterprise.el +++ b/src/enterprise.el @@ -50,7 +50,7 @@ fn enterprise() -> String {

    Compliance architecture

    -

    SQLite local storage. No cloud database with your data. SOC 2 alignment built into the data model. ExternalSecret-based secrets management. Audit logs at every layer.

    +

    Custom on-device storage. No cloud database with your data. SOC 2 alignment built into the data model. ExternalSecret-based secrets management. Audit logs at every layer.

    diff --git a/src/enterprise_terms.el b/src/enterprise_terms.el index a60ee03..28bf7f2 100644 --- a/src/enterprise_terms.el +++ b/src/enterprise_terms.el @@ -9,6 +9,19 @@ fn enterprise_terms_page() -> String { fn enterprise_terms_body() -> String { return " + +
    ← Neuron diff --git a/src/environmental.el b/src/environmental.el index f92392e..0dfbf3d 100644 --- a/src/environmental.el +++ b/src/environmental.el @@ -46,9 +46,9 @@ fn environmental() -> String {

    No database server for your data

    -

    SQLite on your machine

    +

    On-device storage

    - Your memory graph lives in a single SQLite file. No cloud database servers running 24/7 to store and serve your conversations. No replication across availability zones. Just a file on your device. + Your memory graph lives in a custom on-device storage layer we built for this purpose. No cloud database servers running 24/7 to store and serve your conversations. No replication across availability zones. Just your device.

    diff --git a/src/footer.el b/src/footer.el index 6a6b3e9..5d4d2fe 100644 --- a/src/footer.el +++ b/src/footer.el @@ -6,8 +6,8 @@ fn footer() -> String {
    - -

    Neuron

    +
    + \"Neuron\"

    Built Different.

    diff --git a/src/main.el b/src/main.el index 86c64c6..ee2b212 100644 --- a/src/main.el +++ b/src/main.el @@ -40,6 +40,8 @@ from about import { about_page } from founding_badge import { founding_badge, founding_badge_css } from terms import { terms_page } from enterprise_terms import { enterprise_terms_page } +from checkout import { checkout_page } +from safety import { safety } // ── Founding counter ────────────────────────────────────────────────────────── @@ -78,6 +80,7 @@ fn page(sold: Int, total: Int) -> String { + enterprise() + mission() + local_first() + + safety() + environmental() + pricing(sold, total) + viral() @@ -131,6 +134,42 @@ fn handle_request(method: String, path: String, body: String) -> String { return "{\"__status__\":404,\"error\":\"not found\"}" } + // ── Checkout page ───────────────────────────────────────────────────────── + if str_starts_with(path, "/checkout") { + let plan: String = "founding" + if str_contains(path, "plan=professional") { + plan = "professional" + } + let pub_key: String = state_get("__stripe_publishable_key__") + return page_open() + checkout_page(plan, pub_key) + page_close() + } + + // ── Stripe payment intent ───────────────────────────────────────────────── + if str_eq(path, "/api/payment-intent") { + let stripe_key: String = state_get("__stripe_secret_key__") + if str_eq(stripe_key, "") { + return "{\"__status__\":503,\"error\":\"Stripe not configured\"}" + } + let plan: String = "founding" + if str_contains(body, "\"professional\"") { + plan = "professional" + } + let amount: String = "19900" + if str_eq(plan, "professional") { + amount = "1900" + } + let pi_body: String = "amount=" + amount + + "¤cy=usd" + + "&payment_method_types[]=card" + + "&metadata[plan]=" + plan + let response: String = http_post_form_auth( + "https://api.stripe.com/v1/payment_intents", + stripe_key, + pi_body + ) + return response + } + // ── Health check ────────────────────────────────────────────────────────── if str_eq(path, "/api/health") { return "{\"status\":\"ok\",\"service\":\"neuron-landing\"}" @@ -279,10 +318,12 @@ state_set("__founding_total__", int_to_str(FOUNDING_TOTAL)) // Stripe config from environment. let stripe_key: String = env("STRIPE_SECRET_KEY") +let stripe_pub_key: String = env("STRIPE_PUBLISHABLE_KEY") let stripe_price_founding: String = env("STRIPE_PRICE_FOUNDING") let stripe_price_professional: String = env("STRIPE_PRICE_PROFESSIONAL") let license_api_url: String = env("NEURON_LICENSE_API_URL") state_set("__stripe_secret_key__", stripe_key) +state_set("__stripe_publishable_key__", stripe_pub_key) state_set("__stripe_price_founding__", stripe_price_founding) state_set("__stripe_price_professional__", stripe_price_professional) state_set("__license_api_url__", license_api_url) diff --git a/src/pricing.el b/src/pricing.el index 335c6a7..8d3c2ec 100644 --- a/src/pricing.el +++ b/src/pricing.el @@ -53,6 +53,7 @@ fn pricing(sold: Int, total: Int) -> String {
  • -Persistent memory — never resets
  • -Neuron inference — metered, priced below OpenAI and Anthropic
  • -Local inference via Ollama
  • +
  • Local models may give lower quality responses. Neuron inference is cheap — give it a try.
  • -Bring your own API keys (optional)
  • -Unlimited projects
  • -3 marketplace plugins included
  • diff --git a/src/safety.el b/src/safety.el new file mode 100644 index 0000000..305f321 --- /dev/null +++ b/src/safety.el @@ -0,0 +1,76 @@ +// components/safety.el — Child and family safety section. +// +// Describes the Hard Bell architecture and genuine protective design. +// Not "safe for kids" marketing — actual architecture that treats +// family safety as a structural property, not a feature checkbox. + +fn safety() -> String { + return " +
    +
    + +
    + +
    +
    +
    + Family & safety +
    + +

    + Built for real families.
    Not the idea of them. +

    + +

    + Most AI products add parental controls as an afterthought — a toggle that tells the platform which account is the adult and which is the child. That's not safety. That's a permission system with a friendly name. +

    + +

    + Neuron's family architecture was designed around an uncomfortable statistical fact: the people closest to a child are statistically the most likely threat. The emergency contact on file and the source of danger are often the same person. A system that routes every distress signal to "guardian on file" is not a safety system. It's a notification system that may alert the very person the child needs protection from. +

    + +

    + We built something different. We called it the Hard Bell. +

    +
    + +
    + +
    +

    Hard Bell

    +

    An emergency contact the threat can't intercept

    +

    + The Hard Bell is an emergency contact designated in a calm moment — a teacher, a relative outside the household, a trusted friend — set up independently from the guardian account. When a signal warrants it, this contact is reached. The guardian is not automatically notified. +

    +
    + +
    +

    Emergency routing

    +

    Emergency services first — not parent notification

    +

    + Physical danger and abuse signals route to emergency services and crisis lines — not to the guardian account. Neuron evaluates the content of the signal, not just the age of the user. The guardian cannot disable or redirect this path. +

    +
    + +
    +

    Parent dashboard

    +

    Oversight without surveillance

    +

    + Parents see what they need to see. The child's conversations remain private unless a wellbeing signal triggers parent notification — and even then, the routing logic protects against the parent being the source of harm. +

    +
    + +
    + +
    + +
    +

    + Minors require a parent account. Children and teens cannot create accounts on their own — a parent or guardian creates the family account, configures access, and designates the Hard Bell contact. The child's experience is private from everyone except the trusted adult who set it up — and from emergency services when the signal warrants it. +

    +
    + +
    +
    +" +} diff --git a/src/styles.el b/src/styles.el index 66d984e..5f3672b 100644 --- a/src/styles.el +++ b/src/styles.el @@ -1401,32 +1401,12 @@ fn page_close() -> String { pollFoundingCount(); setInterval(pollFoundingCount, 90000); - // Stripe checkout + // Checkout buttons — navigate to integrated payment page var checkoutBtns = document.querySelectorAll('[data-checkout]'); checkoutBtns.forEach(function(btn) { btn.addEventListener('click', function() { var plan = btn.getAttribute('data-checkout'); - var origText = btn.textContent; - btn.textContent = 'Loading...'; - btn.disabled = true; - fetch('/api/checkout', { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ plan: plan }) - }) - .then(function(r) { return r.json(); }) - .then(function(data) { - if (data.url) { - window.location.href = data.url; - } else { - btn.textContent = 'Error — try again'; - btn.disabled = false; - } - }) - .catch(function() { - btn.textContent = 'Error — try again'; - btn.disabled = false; - }); + window.location.href = '/checkout?plan=' + plan; }); });