// ProductIndexPage.jsx // // The "/product" overview - what Navbar's logo-adjacent nav, the Hero's // "Explore the Platform" CTA, and Footer's "View Full Platform" link all // point to. Renders the same REAL_MODULES registry (EarlyAccessGate.jsx) // as Home's ModuleGrid, since a second hand-written module list would // immediately drift from the real one (SPEC-07 Section 2). // // Deepened beyond a single flat 15-card grid: MODULE_CATEGORIES groups the // same REAL_MODULES ids by where they sit in the real domain flow (see // CLAUDE.md's "Domain flow" - Purchase -> GRN -> Inventory -> Production -> // Sales -> Dispatch -> Customer Portal, plus the Partners/Insight modules // around it) - still id references into one array, not a duplicate module // list. PRODUCT_FLOW restates that same domain flow as a short numbered // walkthrough, since 15 cards alone don't show that this is one connected // system, not 15 unrelated features. // // Loaded as a classic (non-module) Babel-transformed script - see // index.html's header comment. const MODULE_CATEGORIES = [ { title: "Order & Fulfillment", moduleIds: ["sales-orders", "purchase-grn", "fleet-dispatch", "customer-portal"], }, { title: "Inventory & Production", moduleIds: ["inventory", "warehouses", "production-workflow"], }, { title: "Pricing & Partners", moduleIds: ["business-rules", "vendors", "brokers", "customers"], }, { title: "Insight & Control", moduleIds: ["analytics-dashboards", "ai-assistant", "roles-permissions", "localization"], }, ]; const PRODUCT_FLOW = [ { title: "Purchase & receive", body: "A Purchase Order is raised, and the GRN records exactly what arrived, line by line - partial deliveries included." }, { title: "Stock becomes real", body: "Received goods flow straight into Inventory, tracked per warehouse, the moment they're logged." }, { title: "Production, if it applies", body: "Raw material moves through your own configured stages, tracked on a live WIP ledger - not a single \"in production\" flag." }, { title: "Sales draws on live stock", body: "A Sales Order is confirmed against what's actually available, not a number from last week's count." }, { title: "Dispatch, then proof of delivery", body: "Fleet & Dispatch tracks the shipment through to a customer-confirmed delivery via the Customer Portal - no phone call needed." }, ]; const PRODUCT_INDEX_FAQS = [ { q: "Do I need all 15 modules?", a: "No - modules are enabled per company. See our Pricing page for which modules are typically bundled into Core, Production, and Enterprise.", }, { q: "Can I add a module later without migrating?", a: "Yes - enabling a module is a configuration change on the same platform, not a separate rollout or data migration.", }, { q: "Which modules should I start with?", a: "That's exactly what a demo call scopes out with you, based on your actual process - see our Solutions pages for how this typically breaks down by kind of operation.", }, ]; function ProductIndexPage() { useDocumentMeta( "Product Overview - SkelBiz Manufacturing Operations Platform", `Every SkelBiz module in one place: ${REAL_MODULES.length} real, running capabilities covering sales, purchase, multi-warehouse inventory, the production workflow engine, business rules, analytics, and more.` ); const byId = Object.fromEntries(REAL_MODULES.map((m) => [m.id, m])); return ( <>
Product

{REAL_MODULES.length} modules. One platform.

Every module below is real and running today - click through for exactly what it does.

How the modules connect

One event stream, not 15 unrelated features reconciled by hand.

{PRODUCT_FLOW.map((step, i) => (
{i + 1}

{step.title}

{step.body}

))}
{MODULE_CATEGORIES.map((cat, i) => (

{cat.title}

{cat.moduleIds.map((id) => { const m = byId[id]; return (

{m.name}

{m.blurb}

Learn more →
); })}
))}

Frequently asked

{PRODUCT_INDEX_FAQS.map((item) => (

{item.q}

{item.a}

))}

Not sure which modules you need?

That's exactly what the demo call is for - we'll scope it together.

Request a Demo
); }