This commit is contained in:
2026-03-17 00:24:33 -05:00
parent 279c46fbde
commit c3f0adc676
2 changed files with 562 additions and 36 deletions

526
MARKET.md Normal file
View File

@@ -0,0 +1,526 @@
# MARKET
## Purpose
This document compares CODEXIUM against the provided top-50 requested manufacturing MRP features and translates the gaps into a practical product roadmap.
Assessment basis:
- current shipped scope in [README.md](D:/CODING/mrp-codex/README.md)
- completed work in [SHIPPED.md](D:/CODING/mrp-codex/SHIPPED.md)
- planned work in [ROADMAP.md](D:/CODING/mrp-codex/ROADMAP.md)
- current repository implementation state as of March 17, 2026
Status legend:
- `Implemented`: materially present in the product today
- `Partial`: meaningful foundation exists, but the market-expected version is not complete
- `Missing`: not present or not competitive enough to count as delivered
## Executive Summary
CODEXIUM is already strong for a foundation-stage MRP in these areas:
- integrated CRM, sales, purchasing, shipping, inventory, projects, manufacturing, and planning in one app
- multi-level BOM explosion for demand planning
- inventory reservations, transfers, and location-level stock visibility
- work orders, stations, operation templates, material issue/completion posting
- pegged build/buy recommendations tied back to sales demand
- project linkage across customer, commercial, shipment, and manufacturing records
- branded documents, attachments, audit trail, diagnostics, RBAC, and single-container deployment
CODEXIUM is not yet market-complete against the top-50 list. The current position is:
- `Implemented`: 3 / 50
- `Partial`: 13 / 50
- `Missing`: 34 / 50
That result is not a criticism of the product direction. It reflects that CODEXIUM is already a credible modular MRP foundation, but has not yet expanded into the deeper planning, traceability, execution, maintenance, quality, integration, and analytics layers expected by mature manufacturing buyers.
## Tier Summary
| Tier | Focus | Implemented | Partial | Missing | Readout |
| --- | --- | ---: | ---: | ---: | --- |
| Tier 1 | Core planning & scheduling | 0 | 3 | 7 | Good demand-planning base, but no full MPS/capacity/ATP engine yet |
| Tier 2 | Inventory & traceability | 3 | 0 | 7 | Strong stock visibility baseline, weak traceability/compliance depth |
| Tier 3 | Production execution & quality | 0 | 3 | 12 | Work-order foundation exists, but execution depth is still early |
| Tier 4 | Integration & interoperability | 0 | 3 | 7 | Internal modules are connected; external ecosystem integration is mostly absent |
| Tier 5 | Analytics, UX & platform quality | 0 | 4 | 1 | Strong UX intent and dashboard base, but not yet configurable/mobile/AI-driven |
## Comparative Analysis
### Tier 1: Core Planning & Scheduling
| Rank | Feature | Status | CODEXIUM Position |
| --- | --- | --- | --- |
| 1 | Purchase Planning & Automated PO Generation | `Partial` | Demand-planning recommendations and prefilled PO drafts exist, but not full autonomous purchasing from reorder points, lead times, min/max, and policy-driven replenishment. |
| 2 | Demand Forecasting from Historical Data | `Missing` | No historical demand forecasting engine or forecast-driven planning model is present. |
| 3 | Master Production Scheduling (MPS) | `Missing` | Planning is driven by live project/work-order/demand views, but there is no explicit top-level MPS layer. |
| 4 | Finite Capacity Scheduling | `Missing` | Current planning is not capacity-aware and does not enforce machine/labor constraints. |
| 5 | Multi-Level BOM Management | `Partial` | Multi-level BOM structure and explosion exist, but BOM versioning, ECO-driven effectivity, and parametric relationships are missing. |
| 6 | Sales Order to Production Job Auto-Conversion | `Partial` | Planner-assisted conversion to work-order drafts exists, but not true automatic conversion from confirmed sales demand into planned/released jobs. |
| 7 | Scenario Planning & Simulation | `Missing` | No what-if modeling or alternate-plan simulation is present. |
| 8 | Multi-Site / Multi-Plant Planning | `Missing` | Warehouses/locations exist, but not plant-aware planning, transfer planning, or site capacity coordination. |
| 9 | Subcontract / Outsourced Operation Management | `Missing` | No subcontracted operation flow, outside processing routing step, or supplier-linked manufacturing handoff exists. |
| 10 | Delivery Date Estimation (Available-to-Promise) | `Missing` | No ATP/CTP calculation is available for quoting or customer-service commitments. |
### Tier 2: Inventory & Traceability
| Rank | Feature | Status | CODEXIUM Position |
| --- | --- | --- | --- |
| 11 | Real-Time Inventory Visibility Across All Locations | `Implemented` | On-hand, reserved, available, warehouse/location balances, transfers, and transaction history are shipped. |
| 12 | Lot / Serial Number Tracking (Full Bi-Directional) | `Missing` | No lot genealogy, serial trace, or forward/backward traceability is implemented. |
| 13 | Inventory Reservation & Allocation | `Implemented` | Manual reservations and work-order-driven reservations are already present. |
| 14 | Barcode / RFID Scanning Support | `Missing` | No scanner-first receiving, picking, issue, completion, or count workflow exists. |
| 15 | Negative Stock Prevention Enforcement | `Missing` | No explicit stock-floor enforcement is documented or surfaced as a guarded planning/inventory rule. |
| 16 | FIFO / FEFO Inventory Consumption Rules | `Missing` | Inventory issue logic does not yet expose consumption policies by lot/date/age. |
| 17 | Recall Readiness & <2-Minute Trace Report | `Missing` | Without lot genealogy, recall impact reporting is not possible. |
| 18 | Multi-Location Inventory Management | `Implemented` | Warehouses and nested stock locations are already core to the inventory module. |
| 19 | Inventory Cycle Count & Physical Inventory Portals | `Missing` | No cycle-count workflow, count scheduling, or limited-access count portal exists. |
| 20 | Consignment & Vendor-Managed Inventory (VMI) | `Missing` | No supplier-owned stock model or consumption-based supplier settlement is present. |
### Tier 3: Production Execution & Quality
| Rank | Feature | Status | CODEXIUM Position |
| --- | --- | --- | --- |
| 21 | Digital Work Orders with Shop Floor Dispatch | `Partial` | Digital work orders exist, but dispatch, operator queueing, and workstation-first execution are still limited. |
| 22 | Real-Time Job Costing (Material + Labor + Overhead) | `Missing` | Material posting exists, but labor, overhead, and real-time job-cost accumulation do not. |
| 23 | Time & Labor Tracking by Job / Operation | `Missing` | No labor clock-in/out or operation time capture exists. |
| 24 | Work Center Capacity & Load Planning | `Partial` | Station master data and planning views exist, but no true work-center load balancing or capacity board is delivered. |
| 25 | Production Cost Reporting (Estimate vs. Actual) | `Missing` | No estimate-vs-actual job costing or variance analysis is currently present. |
| 26 | Paperless Shop Floor with Digital Work Instructions | `Partial` | Attachments exist on items and work orders, but not a dedicated operator instruction experience with current-revision control. |
| 27 | Quality Inspection Integration (Inline & Final) | `Missing` | No inspection plans, in-process checks, or work-order quality gate flow exists. |
| 28 | Non-Conformance (NCR) Tracking & CAPA Workflow | `Missing` | No NCR/CAPA subsystem exists. |
| 29 | Preventive Maintenance Scheduling (EAM) | `Missing` | No asset maintenance module or PM scheduler exists. |
| 30 | Machine & Equipment Integration (MES connectivity) | `Missing` | No machine data collection, cycle reporting, or automated shop-floor feedback loop exists. |
| 31 | Configure-Price-Quote (CPQ) for Engineer-to-Order | `Missing` | No product configurator, rules engine, or auto-BOM generation for configured products exists. |
| 32 | Subcontractor Material Free-Issue Tracking | `Missing` | No supplier-side issued-material reconciliation exists for outsourced operations. |
| 33 | Scrap & Yield Management | `Missing` | No expected vs actual yield, scrap capture, or material-adjusted production reporting exists. |
| 34 | Engineering Change Order (ECO) Management | `Missing` | Roadmap references deeper revision needs, but no ECO workflow is implemented. |
| 35 | Tooling & Fixture Tracking | `Missing` | No tooling availability, maintenance, or routing dependency model exists. |
### Tier 4: Integration & Interoperability
| Rank | Feature | Status | CODEXIUM Position |
| --- | --- | --- | --- |
| 36 | Native ERP / Accounting Integration (Bidirectional) | `Missing` | No bidirectional accounting or ERP sync layer exists. |
| 37 | CRM / Sales Order Integration | `Partial` | CRM and sales are natively integrated inside CODEXIUM, but not synced bidirectionally to external CRM systems. |
| 38 | EDI Support (ASC X12 / EDIFACT) | `Missing` | No EDI transaction support is present. |
| 39 | 3PL / WMS Integration (API + EDI 940/945/856) | `Missing` | Shipping documents exist, but there is no 3PL/WMS integration layer. |
| 40 | IoT / Sensor Data Integration for Predictive Maintenance | `Missing` | No IoT ingestion or predictive maintenance trigger path exists. |
| 41 | Supplier Portal with Lead-Time & Performance Tracking | `Missing` | Vendors are modeled internally, but there is no external supplier portal or ASN/confirmation workflow. |
| 42 | eCommerce Platform Integration | `Missing` | No Shopify/WooCommerce or marketplace sync exists. |
| 43 | Open REST API with Webhooks | `Partial` | Internal REST APIs exist, but not a documented public integration surface with webhooks and versioning guarantees. |
| 44 | CAD / PDM System Integration | `Missing` | No engineering-system import pipeline exists for BOMs or revisions. |
| 45 | Accounting / Tax Localization (Multi-Country) | `Partial` | Currency/tax fields exist, but not country-specific tax logic, fiscal localization, or e-invoicing support. |
### Tier 5: Analytics, UX & Platform Quality
| Rank | Feature | Status | CODEXIUM Position |
| --- | --- | --- | --- |
| 46 | Configurable Role-Based Dashboards with Real-Time KPIs | `Partial` | Dashboard widgets and rollups exist, but dashboards are not yet user-role configurable. |
| 47 | AI-Powered Planning Anomaly Detection | `Missing` | No AI/ML anomaly engine exists in planning. |
| 48 | Mobile-First Shop Floor Interface | `Partial` | The app is responsive, but not intentionally designed as a mobile-first execution surface for shop-floor work. |
| 49 | Project Capabilities (Cradle-to-Grave Project Tracking) | `Partial` | Projects are a first-class module and already linked across CRM, sales, shipping, and manufacturing, but milestones, cost rollups, procurement depth, and full cradle-to-grave control are still roadmap items. |
| 50 | Intuitive UX with Low Onboarding Time | `Partial` | Searchable pickers, dense operational layouts, and modular navigation are good foundations, but the product still needs more guided workflows and role-tailored experiences to claim this as a true market strength. |
## What CODEXIUM Already Does Well
These are the strongest market-facing talking points today:
1. End-to-end modular manufacturing workflow already exists in one codebase.
2. Demand planning is deeper than a typical early-stage MRP because it already supports BOM explosion, pegged supply, and build/buy recommendations.
3. Inventory location visibility, reservations, and transfer flows are already operational.
4. Projects are already first-class, which is a major differentiator versus many ERP foundations.
5. Work orders already post real inventory transactions for issue and completion.
6. Documents, approvals, revisions, attachments, audit, diagnostics, and brandable PDFs are unusually mature for this product stage.
7. Single-container deployment and SQLite-backed portability make the system operationally simple for smaller manufacturers.
## Missing Features and How To Achieve Them
The list below focuses on practical product moves rather than abstract wish-list items.
### 1. Deepen Planning Into A Real Scheduling Engine
Missing or weak features:
- demand forecasting
- master production scheduling
- finite capacity scheduling
- scenario planning
- ATP / delivery-date estimation
- multi-site planning
How to achieve it:
- Extend `planning` into a true planning engine instead of a gantt-only visibility layer.
- Add `forecast` entities and time buckets under `server/src/modules/planning`.
- Add `workCenter`, `calendar`, `shift`, `capacityBucket`, and `constraint` models under `manufacturing`.
- Build an MPS layer that sits between sales/project demand and detailed work-order generation.
- Add an ATP service that evaluates open supply, capacity, and purchased lead times before returning a promise date.
- Expand the current demand-planning recommendation engine to support reorder policies, time fences, and alternate scenarios.
Recommended roadmap placement:
- Near-term after current manufacturing routing/work-center work
- Belongs mostly in existing `planning` and `manufacturing` modules
### 2. Make Inventory Planning-Grade and Recall-Grade
Missing or weak features:
- lot/serial traceability
- negative stock prevention
- FIFO/FEFO rules
- cycle counting
- barcode workflows
- recall reporting
- consignment / VMI
How to achieve it:
- Add lot and serial models, lot-controlled transactions, and lot-resolved reservations under `inventory`.
- Enforce non-negative stock in issue/transfer/reservation services, not just in UI validation.
- Add inventory policy settings per item: lot-controlled, serial-controlled, FIFO, FEFO, expiry, consignment.
- Build count-session entities and lightweight count-task screens for warehouse execution.
- Introduce barcode-first receiving/issue/transfer/count UI states in the inventory and manufacturing modules.
- Once lot genealogy exists, add trace reports for backward/forward lot resolution and recall impact.
Recommended roadmap placement:
- High priority if targeting food, medical, chemical, or aerospace-adjacent manufacturers
- Belongs in `inventory`, with trace cross-links into `manufacturing`, `purchasing`, and `shipping`
### 3. Expand Manufacturing From Work Orders Into Shop-Floor Execution
Missing or weak features:
- labor tracking
- job costing
- estimate-vs-actual cost reporting
- scrap/yield
- digital instructions
- quality checkpoints
- NCR/CAPA
- tooling
- subcontract operations
How to achieve it:
- Extend `manufacturing` with `workCenter`, `routingStep`, `laborEntry`, `machineTime`, `scrapEvent`, `yieldSnapshot`, and `qualityInspection`.
- Add operation-level start/pause/complete execution screens and operator queue views.
- Add cost-rollup services that combine issued material, labor time, and burden rates.
- Reuse attachments plus revision metadata to create a formal digital instruction panel on the work-order operation screen.
- Add NCR/CAPA and inspection models either under `manufacturing` or a new `quality` module.
- Add outside-processing routing steps that generate supplier-facing purchasing events.
Recommended roadmap placement:
- Direct extension of the current manufacturing roadmap
- Best implemented as deeper `manufacturing` capability, with a likely new `quality` subdomain
### 4. Add Engineering Change and Product-Control Depth
Missing or weak features:
- BOM version control
- ECO workflow
- CAD/PDM integration
- configurable products / CPQ
- tooling dependencies
How to achieve it:
- Add revision-controlled BOM headers and effectivity dates in `inventory`.
- Add ECO request, approval, release, and effective-change propagation into BOM/routing/work-order data.
- Build import connectors for engineering structures from CAD/PDM exports first, then native integrations later.
- Introduce configurable product rules in `sales` plus generated BOM/routing outcomes in `inventory` and `manufacturing`.
Recommended roadmap placement:
- Mid-term
- Primarily `inventory`, `sales`, and `manufacturing`
### 5. Build the Integration Surface Buyers Expect
Missing or weak features:
- accounting integration
- supplier portal
- EDI
- 3PL / WMS integration
- eCommerce sync
- public API + webhooks
- IoT maintenance feeds
How to achieve it:
- Formalize the current internal API into a versioned integration layer.
- Add outbound webhook events for order approved, PO created, receipt posted, WO released, shipment shipped, inventory changed.
- Add integration adapters under a new `integrations` module rather than burying them in domain services.
- Start with REST + webhooks and CSV import/export for fastest market progress.
- Follow with targeted adapters: QuickBooks/Xero, Shopify, 3PL APIs, supplier confirmations/ASN, and later EDI.
Recommended roadmap placement:
- Mid-term, but public API/webhooks should move earlier because they unblock partner/customer integrations
- Best as a new top-level backend domain: `server/src/modules/integrations`
### 6. Turn Projects Into A Real ETO / Program-Control Advantage
Missing or weak features:
- milestones
- project rollups
- project-level costs
- project material view
- project execution cockpit
How to achieve it:
- Deliver the already-planned milestones and rollups first.
- Add project-level commercial, supply, manufacturing, and shipment summary services.
- Add project cost buckets sourced from sales, purchasing, manufacturing, and shipping transactions.
- Add project readiness and shortage boards for long-running builds.
Recommended roadmap placement:
- Immediate priority
- Extends the existing `projects` module and strengthens one of CODEXIUMs best differentiators
### 7. Improve Daily Adoption Through Role-Specific UX
Missing or weak features:
- configurable dashboards
- mobile-first shop-floor screens
- guided low-onboarding workflows
- anomaly detection
How to achieve it:
- Add saved dashboard layouts and role-default widget packs under `dashboard`.
- Build dedicated mobile execution screens for receiving, issue, completion, counts, and labor entry.
- Add contextual “next step” actions and exception queues per role instead of generic list/detail flows only.
- Add rule-based anomaly detection first, then ML later: late PO risk, overloaded work center, missing material, demand spike, suspicious lead-time drift.
Recommended roadmap placement:
- Split into near-term UX work and later AI work
- `dashboard`, `inventory`, `manufacturing`, and `planning` should all contribute
## Suggested Product Roadmap From This Analysis
### Phase A: Convert Foundation MRP Into Planning-Grade MRP
Priority additions:
- project milestones and project rollups
- work-center and routing depth
- labor capture
- capacity-aware scheduling
- reorder-policy purchasing
- non-negative stock enforcement
- BOM revisions
Why this phase matters:
- It strengthens current modules without requiring new market-facing verticals.
- It closes the biggest credibility gaps in planning and manufacturing execution.
### Phase B: Make The System Traceable and Shop-Floor Ready
Priority additions:
- lot/serial traceability
- barcode workflows
- cycle counting
- digital operator dispatch
- scrap/yield
- quality inspections
- job costing
Why this phase matters:
- It moves CODEXIUM from “good operational foundation” to “usable manufacturing system” for more serious buyers.
### Phase C: Build The ETO / Multi-Discipline Differentiator
Priority additions:
- project cockpit
- ECO workflow
- estimate-vs-actual project/job cost visibility
- subcontract processing
- ATP
- scenario planning
Why this phase matters:
- It leans into CODEXIUMs strongest differentiator: projects + manufacturing + planning in one product.
### Phase D: Open The Platform
Priority additions:
- versioned public REST API
- webhooks
- accounting integration
- supplier portal
- 3PL integration
- eCommerce sync
Why this phase matters:
- It improves commercial viability and reduces objections in buyer evaluations.
## Feature Gap Analysis By Manufacturing Type
### Make-to-Stock (MTS)
Current fit:
- moderate
Strengths:
- stock visibility
- reservations
- transfers
- purchasing and sales document flow
Biggest gaps:
- forecasting
- reorder automation
- FIFO/FEFO
- count discipline
### Make-to-Order (MTO)
Current fit:
- moderate to strong
Strengths:
- order-driven demand planning
- quote/order/project/manufacturing linkage
- shipment linkage
Biggest gaps:
- ATP
- job costing
- labor tracking
- deeper production dispatch
### Configure-to-Order (CTO)
Current fit:
- weak
Biggest gaps:
- CPQ
- revision-controlled engineering changes
- CAD/PDM integration
### Engineer-to-Order (ETO)
Current fit:
- moderate foundation, high upside
Strengths:
- projects are already first-class
- commercial/manufacturing/shipping cross-links already exist
Biggest gaps:
- milestones
- cost rollups
- ECO
- subcontracting
- CPQ/configuration logic
### Process Manufacturing
Current fit:
- weak
Biggest gaps:
- lots
- expiry
- FEFO
- recall traceability
- yield and quality controls
### Discrete / Job Shop
Current fit:
- moderate foundation
Strengths:
- work orders
- stations
- operation templates
- issue/completion posting
Biggest gaps:
- finite scheduling
- labor tracking
- job costing
- tooling
- dispatch UI
### Multi-Site Enterprise
Current fit:
- weak to moderate
Strengths:
- warehouses and locations exist
Biggest gaps:
- plant-aware planning
- inter-site planning logic
- enterprise integrations
- supplier/3PL/EDI ecosystem support
## Bottom Line
CODEXIUM is already credible as a modular manufacturing operations foundation and has unusually strong project, planning, and cross-module linkage for its current maturity level.
Where it is strongest today:
- small to mid-sized discrete manufacturers
- make-to-order environments
- project-linked manufacturing operations
- organizations that value deployment simplicity and integrated workflows over enterprise breadth
Where it is not yet market-complete:
- advanced scheduling
- regulated traceability
- shop-floor labor/cost/quality depth
- engineering control
- enterprise integrations
Best strategic path:
1. Double down on current strengths by deepening planning, projects, and manufacturing first.
2. Add traceability and execution discipline next to broaden manufacturing fit.
3. Open the integration layer after the core operational model is more mature.
That sequence gives CODEXIUM the clearest path from strong foundation MRP to differentiated manufacturing platform.

View File

@@ -80,18 +80,18 @@ function getThemeVars(variant: LandingVariant): CSSProperties {
function panelClass(isDark: boolean) {
return isDark
? "border-white/12 bg-white/[0.07] shadow-[0_30px_90px_rgba(2,6,23,0.52)]"
: "border-white/60 bg-white/[0.48] shadow-[0_30px_90px_rgba(37,99,235,0.14)]";
? "border-line/70 bg-surface/90 shadow-[0_30px_80px_rgba(2,6,23,0.45)]"
: "border-line/70 bg-surface/90 shadow-[0_30px_80px_rgba(15,23,42,0.12)]";
}
function softPanelClass(isDark: boolean) {
return isDark
? "border-white/10 bg-white/[0.06] shadow-[0_20px_60px_rgba(2,6,23,0.4)]"
: "border-white/55 bg-white/[0.42] shadow-[0_18px_50px_rgba(37,99,235,0.1)]";
? "border-line/70 bg-page/80 shadow-[0_20px_60px_rgba(2,6,23,0.34)]"
: "border-line/70 bg-page/75 shadow-[0_20px_50px_rgba(15,23,42,0.1)]";
}
function chipClass(isDark: boolean) {
return isDark ? "border-white/15 bg-white/[0.08]" : "border-white/60 bg-white/[0.52]";
return isDark ? "border-line/70 bg-page/80" : "border-line/70 bg-surface/90";
}
function LandingExperience({ variant }: { variant: LandingVariant }) {
@@ -116,7 +116,7 @@ function LandingExperience({ variant }: { variant: LandingVariant }) {
<div className={`absolute left-[22%] top-[32rem] h-64 w-64 rounded-full blur-3xl ${isDark ? "bg-indigo-400/10" : "bg-violet-200/35"}`} />
<div className="relative mx-auto flex w-full max-w-7xl flex-col gap-12 px-6 pb-20 pt-8 lg:px-8">
<header className={`flex flex-col gap-4 rounded-[30px] border px-5 py-4 backdrop-blur-2xl xl:flex-row xl:items-center xl:justify-between ${panelClass(isDark)}`}>
<header className={`flex flex-col gap-4 rounded-[28px] border px-5 py-4 xl:flex-row xl:items-center xl:justify-between ${panelClass(isDark)}`}>
<div className="flex items-center gap-4">
<div className="flex h-12 w-12 items-center justify-center rounded-2xl bg-[linear-gradient(135deg,rgb(var(--color-brand)),rgb(var(--color-accent)))] text-lg font-black tracking-[0.18em] text-white">
CX
@@ -127,13 +127,13 @@ function LandingExperience({ variant }: { variant: LandingVariant }) {
</div>
</div>
<div className="flex flex-wrap items-center gap-3">
<span className={`rounded-2xl border px-4 py-2 text-sm font-semibold text-text backdrop-blur-xl ${chipClass(isDark)}`}>
<span className={`rounded-2xl border px-4 py-2 text-sm font-semibold text-text ${chipClass(isDark)}`}>
{variantLabel}
</span>
<Link to={altRoute} className={`rounded-2xl border px-4 py-2 text-sm font-semibold text-text transition hover:bg-white/10 backdrop-blur-xl ${chipClass(isDark)}`}>
<Link to={altRoute} className={`rounded-2xl border px-4 py-2 text-sm font-semibold text-text transition hover:bg-page/70 ${chipClass(isDark)}`}>
{altLabel}
</Link>
<Link to="/login" className={`rounded-2xl border px-4 py-2 text-sm font-semibold text-text transition hover:bg-white/10 backdrop-blur-xl ${chipClass(isDark)}`}>
<Link to="/login" className={`rounded-2xl border px-4 py-2 text-sm font-semibold text-text transition hover:bg-page/70 ${chipClass(isDark)}`}>
Open app
</Link>
<a
@@ -147,7 +147,7 @@ function LandingExperience({ variant }: { variant: LandingVariant }) {
<section className="grid gap-10 lg:grid-cols-[1.05fr_0.95fr] lg:items-center">
<div>
<div className={`inline-flex items-center gap-2 rounded-full border px-4 py-2 text-xs font-semibold uppercase tracking-[0.24em] text-muted backdrop-blur-2xl ${chipClass(isDark)}`}>
<div className={`inline-flex items-center gap-2 rounded-full border px-4 py-2 text-xs font-semibold uppercase tracking-[0.24em] text-muted ${chipClass(isDark)}`}>
Built for discrete manufacturing teams
</div>
<h1 className="mt-6 max-w-4xl font-['Space_Grotesk','Manrope',sans-serif] text-5xl font-black leading-[0.95] tracking-[-0.05em] text-text sm:text-6xl xl:text-7xl">
@@ -159,7 +159,7 @@ function LandingExperience({ variant }: { variant: LandingVariant }) {
<div className="mt-8 grid gap-3 sm:grid-cols-3">
{heroMetrics.map((metric) => (
<article key={metric.label} className={`rounded-[26px] border p-4 backdrop-blur-2xl ${softPanelClass(isDark)}`}>
<article key={metric.label} className={`rounded-[24px] border p-4 ${softPanelClass(isDark)}`}>
<div className="text-xs font-semibold uppercase tracking-[0.22em] text-muted">{metric.label}</div>
<div className="mt-3 text-3xl font-black tracking-[-0.04em] text-text">{metric.value}</div>
<div className="mt-2 text-sm text-muted">{metric.detail}</div>
@@ -169,9 +169,9 @@ function LandingExperience({ variant }: { variant: LandingVariant }) {
</div>
<div className="relative">
<div className={`absolute -left-8 top-10 hidden h-24 w-24 rounded-[30px] border backdrop-blur-2xl lg:block ${isDark ? "border-white/10 bg-white/[0.06]" : "border-white/60 bg-white/[0.3]"}`} />
<div className={`rounded-[34px] border p-5 backdrop-blur-3xl ${panelClass(isDark)}`}>
<div className={`rounded-[30px] border p-5 backdrop-blur-2xl ${softPanelClass(isDark)}`}>
<div className={`absolute -left-8 top-10 hidden h-20 w-20 rounded-[28px] border lg:block ${isDark ? "border-white/20 bg-white/10" : "border-white/40 bg-white/20"}`} />
<div className={`rounded-[32px] border p-5 ${isDark ? "bg-[linear-gradient(160deg,rgba(15,23,42,0.82),rgba(15,23,42,0.48))] shadow-[0_35px_90px_rgba(2,6,23,0.55)]" : "bg-[linear-gradient(160deg,rgba(255,255,255,0.68),rgba(255,255,255,0.24))] shadow-[0_35px_90px_rgba(15,23,42,0.18)]"} ${isDark ? "border-line/70" : "border-line/70"}`}>
<div className={`rounded-[28px] border p-5 ${softPanelClass(isDark)}`}>
<div className="flex flex-wrap items-center justify-between gap-3">
<div>
<div className="text-xs font-semibold uppercase tracking-[0.24em] text-muted">Generated executive board</div>
@@ -186,15 +186,15 @@ function LandingExperience({ variant }: { variant: LandingVariant }) {
{spotlightBoard.map((card) => (
<article
key={card.title}
className={`rounded-[24px] border p-4 backdrop-blur-2xl ${
className={`rounded-[24px] border p-4 ${
card.tone === "brand"
? isDark
? "border-blue-300/18 bg-blue-300/10"
: "border-blue-400/25 bg-blue-400/10"
? "border-[rgb(var(--color-brand)/0.25)] bg-[rgb(var(--color-brand)/0.08)]"
: "border-[rgb(var(--color-brand)/0.25)] bg-[rgb(var(--color-brand)/0.08)]"
: card.tone === "accent"
? isDark
? "border-teal-300/18 bg-teal-300/10"
: "border-teal-400/25 bg-teal-400/10"
? "border-[rgb(var(--color-accent)/0.25)] bg-[rgb(var(--color-accent)/0.08)]"
: "border-[rgb(var(--color-accent)/0.25)] bg-[rgb(var(--color-accent)/0.08)]"
: softPanelClass(isDark)
}`}
>
@@ -206,7 +206,7 @@ function LandingExperience({ variant }: { variant: LandingVariant }) {
</div>
<div className="mt-5 grid gap-3 xl:grid-cols-[1.3fr_0.7fr]">
<div className={`rounded-[24px] border p-4 backdrop-blur-2xl ${softPanelClass(isDark)}`}>
<div className={`rounded-[24px] border p-4 ${softPanelClass(isDark)}`}>
<div className="flex items-center justify-between gap-3">
<div className="text-sm font-semibold text-text">Project and manufacturing pulse</div>
<div className="text-xs uppercase tracking-[0.18em] text-muted">Generated snapshot</div>
@@ -217,12 +217,12 @@ function LandingExperience({ variant }: { variant: LandingVariant }) {
{ label: "Orion service kit launch", progress: 61, status: "Waiting on one purchased line" },
{ label: "Atlas retrofit release", progress: 43, status: "Routing review in progress" },
].map((row) => (
<div key={row.label} className={`rounded-[20px] border p-3 backdrop-blur-2xl ${isDark ? "border-white/10 bg-white/[0.05]" : "border-white/55 bg-white/[0.35]"}`}>
<div key={row.label} className={`rounded-[20px] border p-3 ${isDark ? "border-line/70 bg-page/75" : "border-line/60 bg-page/75"}`}>
<div className="flex flex-wrap items-center justify-between gap-2">
<div className="font-semibold text-text">{row.label}</div>
<div className="text-xs uppercase tracking-[0.18em] text-muted">{row.progress}%</div>
</div>
<div className={`mt-3 h-2 overflow-hidden rounded-full ${isDark ? "bg-white/10" : "bg-slate-200/80"}`}>
<div className={`mt-3 h-2 overflow-hidden rounded-full ${isDark ? "bg-line/70" : "bg-line/70"}`}>
<div
className="h-full rounded-full bg-[linear-gradient(90deg,rgb(var(--color-brand)),rgb(var(--color-accent)))]"
style={{ width: `${row.progress}%` }}
@@ -234,7 +234,7 @@ function LandingExperience({ variant }: { variant: LandingVariant }) {
</div>
</div>
<div className={`rounded-[24px] border p-4 backdrop-blur-2xl ${softPanelClass(isDark)}`}>
<div className={`rounded-[24px] border p-4 ${softPanelClass(isDark)}`}>
<div className="text-sm font-semibold text-text">Supply signals</div>
<div className="mt-4 space-y-3">
{[
@@ -242,7 +242,7 @@ function LandingExperience({ variant }: { variant: LandingVariant }) {
{ sku: "KIT-2208", action: "Buy", qty: "240 EA" },
{ sku: "CAB-9031", action: "Transfer", qty: "64 EA" },
].map((signal) => (
<div key={signal.sku} className={`rounded-[18px] border px-3 py-3 backdrop-blur-2xl ${isDark ? "border-white/10 bg-white/[0.05]" : "border-white/55 bg-white/[0.35]"}`}>
<div key={signal.sku} className={`rounded-[18px] border px-3 py-3 ${isDark ? "border-line/70 bg-page/75" : "border-line/60 bg-page/75"}`}>
<div className="flex items-center justify-between gap-3">
<div>
<div className="font-semibold text-text">{signal.sku}</div>
@@ -260,9 +260,9 @@ function LandingExperience({ variant }: { variant: LandingVariant }) {
</div>
</section>
<section className={`grid gap-4 rounded-[32px] border p-6 backdrop-blur-3xl lg:grid-cols-3 ${panelClass(isDark)}`}>
<section className={`grid gap-4 rounded-[32px] border p-6 lg:grid-cols-3 ${panelClass(isDark)}`}>
{proofCards.map((card) => (
<article key={card.label} className={`rounded-[24px] border p-4 backdrop-blur-2xl ${softPanelClass(isDark)}`}>
<article key={card.label} className={`rounded-[24px] border p-4 ${softPanelClass(isDark)}`}>
<div className="text-xs font-semibold uppercase tracking-[0.22em] text-muted">{card.label}</div>
<div className="mt-3 text-5xl font-black tracking-[-0.06em] text-text">{card.value}</div>
<div className="mt-2 text-sm text-muted">{card.note}</div>
@@ -275,13 +275,13 @@ function LandingExperience({ variant }: { variant: LandingVariant }) {
<main className="mx-auto flex w-full max-w-7xl flex-col gap-8 px-6 pb-24 lg:px-8">
<section className="grid gap-6 lg:grid-cols-3">
{moduleCards.map((card) => (
<article key={card.title} className={`rounded-[30px] border p-6 backdrop-blur-3xl ${panelClass(isDark)}`}>
<article key={card.title} className={`rounded-[28px] border p-6 ${panelClass(isDark)}`}>
<div className="text-xs font-semibold uppercase tracking-[0.22em] text-muted">{card.eyebrow}</div>
<h2 className="mt-4 font-['Space_Grotesk','Manrope',sans-serif] text-2xl font-bold tracking-[-0.04em] text-text">{card.title}</h2>
<p className="mt-4 text-sm leading-7 text-muted">{card.copy}</p>
<div className="mt-6 flex flex-wrap gap-2">
{card.bullets.map((bullet) => (
<span key={bullet} className={`rounded-full border px-3 py-2 text-xs font-semibold uppercase tracking-[0.16em] text-text backdrop-blur-xl ${chipClass(isDark)}`}>
<span key={bullet} className={`rounded-full border px-3 py-2 text-xs font-semibold uppercase tracking-[0.16em] text-text ${chipClass(isDark)}`}>
{bullet}
</span>
))}
@@ -290,7 +290,7 @@ function LandingExperience({ variant }: { variant: LandingVariant }) {
))}
</section>
<section className={`grid gap-8 rounded-[32px] border p-6 backdrop-blur-3xl lg:grid-cols-[0.9fr_1.1fr] ${panelClass(isDark)}`}>
<section className={`grid gap-8 rounded-[32px] border p-6 lg:grid-cols-[0.9fr_1.1fr] ${panelClass(isDark)}`}>
<div>
<div className="text-xs font-semibold uppercase tracking-[0.24em] text-muted">How it moves</div>
<h2 className="mt-4 font-['Space_Grotesk','Manrope',sans-serif] text-4xl font-black tracking-[-0.05em] text-text">
@@ -303,8 +303,8 @@ function LandingExperience({ variant }: { variant: LandingVariant }) {
<div className="space-y-4">
{timeline.map((step) => (
<article key={step.time} className={`grid gap-4 rounded-[24px] border p-4 backdrop-blur-2xl md:grid-cols-[92px_1fr] md:items-start ${softPanelClass(isDark)}`}>
<div className={`rounded-[18px] px-4 py-3 text-center ${isDark ? "bg-white/[0.08]" : "bg-white/[0.55]"}`}>
<article key={step.time} className={`grid gap-4 rounded-[24px] border p-4 md:grid-cols-[92px_1fr] md:items-start ${softPanelClass(isDark)}`}>
<div className={`rounded-[18px] px-4 py-3 text-center ${isDark ? "bg-surface/80" : "bg-surface/90"}`}>
<div className="text-xs font-semibold uppercase tracking-[0.18em] text-muted">Time</div>
<div className="mt-1 text-2xl font-black tracking-[-0.04em] text-text">{step.time}</div>
</div>
@@ -318,7 +318,7 @@ function LandingExperience({ variant }: { variant: LandingVariant }) {
</section>
<section className="grid gap-6 lg:grid-cols-[1.15fr_0.85fr]">
<article className={`rounded-[32px] border p-6 backdrop-blur-3xl ${panelClass(isDark)}`}>
<article className={`rounded-[32px] border p-6 ${panelClass(isDark)}`}>
<div className="text-xs font-semibold uppercase tracking-[0.22em] text-muted">Who this is for</div>
<h2 className="mt-4 font-['Space_Grotesk','Manrope',sans-serif] text-4xl font-black tracking-[-0.05em] text-text">
Teams graduating from spreadsheets, generic ERPs, or disconnected point tools.
@@ -330,14 +330,14 @@ function LandingExperience({ variant }: { variant: LandingVariant }) {
"Growing production shops that want branding, PDFs, approvals, and auditability without enterprise bloat.",
"Leaders who want a system operators will actually open all day, not just during month-end cleanup.",
].map((statement) => (
<div key={statement} className={`rounded-[22px] border p-4 text-sm leading-7 text-text backdrop-blur-2xl ${softPanelClass(isDark)}`}>
<div key={statement} className={`rounded-[22px] border p-4 text-sm leading-7 text-text ${softPanelClass(isDark)}`}>
{statement}
</div>
))}
</div>
</article>
<article id="contact" className={`rounded-[32px] border p-6 backdrop-blur-3xl ${panelClass(isDark)}`}>
<article id="contact" className={`rounded-[32px] border p-6 ${panelClass(isDark)}`}>
<div className="text-xs font-semibold uppercase tracking-[0.22em] text-muted">Next step</div>
<h2 className="mt-4 font-['Space_Grotesk','Manrope',sans-serif] text-3xl font-black tracking-[-0.05em] text-text">
Pitch the platform with a page that already looks production-grade.
@@ -345,7 +345,7 @@ function LandingExperience({ variant }: { variant: LandingVariant }) {
<p className="mt-4 text-sm leading-7 text-muted">
Use this route as a commercial front door, demo backdrop, or customer-facing preview while the core app remains focused on execution.
</p>
<div className={`mt-6 space-y-3 rounded-[24px] border p-4 text-sm text-muted backdrop-blur-2xl ${softPanelClass(isDark)}`}>
<div className={`mt-6 space-y-3 rounded-[24px] border p-4 text-sm text-muted ${softPanelClass(isDark)}`}>
<div className="flex items-center justify-between gap-3">
<span>Public route</span>
<span className="font-semibold text-text">{isDark ? "/darklanding" : "/landing"}</span>
@@ -366,7 +366,7 @@ function LandingExperience({ variant }: { variant: LandingVariant }) {
>
Enter the app
</Link>
<a href="#top" className={`rounded-2xl border px-4 py-3 text-sm font-semibold text-text transition hover:bg-white/10 backdrop-blur-xl ${chipClass(isDark)}`}>
<a href="#top" className={`rounded-2xl border px-4 py-3 text-sm font-semibold text-text transition hover:bg-page/70 ${chipClass(isDark)}`}>
Back to top
</a>
</div>