Website, docs, app, and API are separate on purpose
The marketing site, documentation, customer app, and edge API are deployed independently so content changes, product updates, and backend fixes do not block one another.
The public site is just one layer. Under it sits a Cloudflare-first delivery model that keeps the marketing surface fast, the customer experience separate, and the licensing backend explicit.
The marketing site, documentation, customer app, and edge API are deployed independently so content changes, product updates, and backend fixes do not block one another.
Users, purchases, entitlements, and audit-friendly events belong in a relational store with clear ownership and query paths.
Sessions, one-time magic links, and best-effort throttling stay close to the edge where reads are fast and operational surface area stays small.
That keeps the mental model clean and reduces the number of places where auth, billing, and content logic can tangle.
Introduces the product and routes visitors to docs, downloads, and the customer portal.
Creates the user record and initial entitlement state.
Manages billing, seats, and activation visibility without exposing the admin surface.
Calls the edge API for authentication, licensing checks, and future sync operations.
Content edits stay on the website, user-facing account changes stay in the portal, and API changes stay in the Worker. That separation is what makes the stack easier to deploy and easier to trust.
This structure is also the right base for screenshots, galleries, release notes, and product walkthroughs because those assets can live on the website without becoming application code.
Buy ChartGPT once. Connect your OpenAI, Anthropic, Google, or OpenRouter API key. Send NinjaTrader chart context into your AI workflow.