diff --git a/src/about.el b/src/about.el index ea82e88..108454c 100644 --- a/src/about.el +++ b/src/about.el @@ -1,8 +1,9 @@ // about.el — About page for Neuron landing. // -// Returns the full HTML body content for /about. -// Wrapped by page_open() / page_close() from styles.el. -// Written from Will's first-person perspective. +// Written from Will's first-person perspective, in his memoir register: +// flowing connected sentences, specificity as credibility, emotionally +// hard things stated in a single clause and moved past. Short sentences +// are structural punctuation — used sparingly, at genuine rupture only. fn about_page() -> String { return " @@ -24,22 +25,18 @@ fn about_page() -> String {
-

About

Hi. I'm Will.

- +
\"Will

- I grew up in Fort Smith, Arkansas. Rural poverty, parents with addiction, moved about thirty times before I was fifteen. I left home as a teenager, stayed with friends, finished high school, went to college. At fourteen I found software at the public library — writing C++ because it was the first thing that ever made complete sense to me. -

-

- I dropped out. Worked. Went back as an adult to finish my degree. + 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.

@@ -47,14 +44,11 @@ fn about_page() -> String {

- I spent nearly twenty years building software across every kind of organization — international consulting, early-stage startups, Fortune 5 enterprises. Logistics, retail, entertainment, hospitality, industrial automation, insurance, healthcare, financial services. I trained under Juval Löwy at IDesign and worked with him as a consultant from 2015 to 2021. Most recently, principal engineer at one of the largest retailers in the world. -

-

- I resigned on April 29, 2026. Not because it was a good career move. Because there was something I needed to build. + I dropped out of college, worked, went back as an adult to finish my degree, and built my skills across nearly twenty years and every kind of organization — international consulting, early-stage startups, Fortune 5 enterprises. Logistics, retail, entertainment, hospitality, industrial automation, insurance, healthcare, financial services. I trained under Juval Löwy at IDesign and worked with him as a consultant from 2015 to 2021, which is where I learned what it actually means to practice software engineering as a discipline rather than an improvisation.

- +
String {

What I saw

- Nearly twenty years of software built, watched, and dissected. And I watched AI go from promise to product. The same mistake keeps getting made: tools built to serve organizations, not people. Engagement over relationship. Features over memory. Policies over values. + Across nearly twenty years I watched software get built at organizations with real stakes and real consequences, and I watched AI go from promise to product — watched the same mistake get made at each iteration: tools built to serve the organization's needs, not the person's. Engagement over relationship. Features over memory. Policies where values should be. The fundamental premise that you are a user, not a person, has been so thoroughly baked into the architecture of every major AI system that it doesn't register as a choice anymore. It's treated as the natural condition of the technology.

- Every conversation starts from zero. You are a user, not a person. That's not an accident — it's a design decision. And it is the wrong one. + It is not. It is a design decision. And it is the wrong one.

@@ -90,30 +84,19 @@ fn about_page() -> String {

What I built

- Neuron is what I built. Not a startup in the traditional sense — no team, no funding, no press release. One person, nearly two years, 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. I did this because the existing tools weren't sufficient for what I was trying to build — 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 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.

- Use it long enough and you'll understand why nothing I could have built on top of existing infrastructure would have gotten there. Some things have to be built from the ground up to be built right. + 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.

-
+

What I believe

- AI has genuine potential to free people to do work that actually matters to them. That potential is almost entirely unrealized — not because the technology isn't capable, but because the incentives are wrong. + AI has genuine potential to free people to do work that actually matters to them — not to create engagement loops, not to harvest attention, but to actually serve the person sitting in front of it. That potential is almost entirely unrealized, not because the technology isn't capable, but because the incentives that shaped it were never oriented toward the person.

-

- I don't know if Neuron will work at the scale I'm imagining. But I know it's worth finding out. And I know I'm not going back to the other way of building things. -

-
- - -
-

The mission

String { Build AI that earns the trust it's given.

- Not AGI. Not disrupting industries. Not transforming anything. Something that actually knows you — and is worth knowing. + I don't know if Neuron will work at the scale I'm imagining. But I know it's worth finding out, and I know I'm not going back to the other way of building things.

diff --git a/src/founding_badge.el b/src/founding_badge.el new file mode 100644 index 0000000..a0320aa --- /dev/null +++ b/src/founding_badge.el @@ -0,0 +1,137 @@ +// founding_badge.el — Founding Member badge component. +// +// Renders the certificate-style badge with guilloché background, +// navy colour scheme, and member number. Matches the React archive design. +// Used on the post-purchase success page and as a shareable /founding-badge route. + +fn founding_badge(member_number: Int) -> String { + let num_str: String = int_to_str(member_number) + let show_number: Bool = member_number > 0 + let number_html: String = if show_number { + "
+ No. +

" + num_str + "

+

of 1,000

+
" + } else { + "

Your number awaits

" + } + return " +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + NEURON TECHNOLOGIES · FOUNDING MEMBER · NEURON TECHNOLOGIES · FOUNDING MEMBER + NEURON TECHNOLOGIES · FOUNDING MEMBER · NEURON TECHNOLOGIES · FOUNDING MEMBER + + + +
+

Founding Member

+
+
+ \"Neuron\" +
+ " + number_html + " +
+
+" +} + +fn founding_badge_css() -> String { + return " + +" +} diff --git a/src/main.el b/src/main.el index 5b3a774..86c64c6 100644 --- a/src/main.el +++ b/src/main.el @@ -37,6 +37,7 @@ from viral import { viral } from footer import { footer } from styles import { page_open, page_close } 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 } @@ -202,6 +203,14 @@ fn handle_request(method: String, path: String, body: String) -> String { // ── Stripe webhook ──────────────────────────────────────────────────────── if str_eq(path, "/api/webhooks/stripe") { if str_contains(body, "checkout.session.completed") { + // Increment founding counter when a founding purchase completes. + if str_contains(body, "\"founding\"") { + let current_sold: Int = get_sold() + let new_sold: Int = current_sold + 1 + state_set("__founding_sold__", int_to_str(new_sold)) + println("[webhook] founding sold: " + int_to_str(new_sold)) + } + // Forward to license API for key provisioning. let license_api: String = state_get("__license_api_url__") if !str_eq(license_api, "") { let resp: String = http_post(license_api + "/api/v1/webhooks/stripe", body) @@ -213,13 +222,16 @@ fn handle_request(method: String, path: String, body: String) -> String { // ── Checkout success ────────────────────────────────────────────────────── if str_eq(path, "/marketplace/success") { - return page_open() + " + let badge_html: String = founding_badge(get_sold()) + let badge_css: String = founding_badge_css() + return page_open() + badge_css + "
-

Purchase complete

+

You're in.

Welcome to Neuron.

-

- Your license is being provisioned. Check your email in the next few minutes — your license key and download instructions will be waiting. +

+ Your license is being provisioned. Check your email — your license key and download instructions will be there in the next few minutes.

+
" + badge_html + "
Back to home →
" + page_close() diff --git a/src/styles.el b/src/styles.el index f284ad5..66d984e 100644 --- a/src/styles.el +++ b/src/styles.el @@ -1361,6 +1361,46 @@ fn page_close() -> String { revealEls.forEach(function(el) { el.classList.add('visible'); }); } + // ── Founding counter — live polling ────────────────────────────────────── + var prevSold = null; + function updateFoundingUI(data) { + var remaining = data.remaining; + var sold = data.sold; + var total = data.total; + var pct = Math.round((sold / total) * 100); + var flash = prevSold !== null && sold > prevSold; + prevSold = sold; + + // spots card (inside pricing card) + var spotLabel = document.querySelector('.founding-spots-label'); + if (spotLabel) spotLabel.textContent = 'Only ' + remaining + ' left'; + var spotFill = document.querySelector('.founding-spots-fill'); + if (spotFill) spotFill.style.width = pct + '%'; + var spotSub = document.querySelector('.founding-spots-sub'); + if (spotSub) spotSub.textContent = sold + ' of ' + total + ' claimed'; + + // banner + var bannerCount = document.querySelector('.founding-banner-count'); + if (bannerCount) { + bannerCount.textContent = remaining; + if (flash) { + bannerCount.style.color = '#0078D4'; + setTimeout(function() { bannerCount.style.color = ''; }, 1200); + } + } + var bannerFill = document.querySelector('.founding-banner-fill'); + if (bannerFill) bannerFill.style.width = pct + '%'; + } + + function pollFoundingCount() { + fetch('/api/founding-count') + .then(function(r) { return r.json(); }) + .then(function(data) { updateFoundingUI(data); }) + .catch(function() {}); + } + pollFoundingCount(); + setInterval(pollFoundingCount, 90000); + // Stripe checkout var checkoutBtns = document.querySelectorAll('[data-checkout]'); checkoutBtns.forEach(function(btn) {