Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions app/solutions/cannabis/page.tsx
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
/**
* Demo: AuthiChain × StrainChain — Cannabis Solution
* Problem: A $7.9B illicit cannabis market is undermining 23 states of licensed operators, and MSOs have no single authentication OS that covers seed-to-sale, lab anchoring, METRC reconciliation, and consumer-facing verification across every state they ship to.
* Solution: AuthiChain + QRON verifies authenticity in 2.1 seconds through the StrainChain protocol.
* Business Value: The AuthiChain × StrainChain cannabis solution gives MSOs and licensed cultivators a single API for every state — Polygon-anchored seed-to-sale chain, lab COA hash anchoring, METRC bridge, scan-to-earn consumer rewards, and brand-protection monitoring across every SKU in the licensed market.
*/
export const metadata = { title: 'AuthiChain for Cannabis — StrainChain Supply Chain Authentication', description: 'The only blockchain authentication platform built for cannabis. Seed-to-sale transparency, lab result anchoring, and consumer-facing authenticity verification.' };
export default function CannabisPage() {
const stats = [
Expand Down
112 changes: 112 additions & 0 deletions app/strainchain/demos/consumer/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
/**
* Demo: StrainChain — Consumer
* Problem: Cannabis consumers have almost no way to verify what they paid for — potency, terpenes, origin, and licence status all live on fragile labels and PDFs that are routinely swapped, faked, or out of date.
* Solution: AuthiChain + QRON verifies authenticity in 2.1 seconds through the StrainChain protocol.
* Business Value: Any consumer, on any phone, scans the strain QRON and sees the full lab panel, cultivator story, and licensed chain of custody — and can earn QRON rewards for every authenticated scan, turning verification into a loyalty and community layer for the brand.
*/
import type { CSSProperties } from "react"

export const metadata = {
title: "StrainChain Demo — Consumer Flow",
description:
"Any phone, any browser. Consumers scan the strain QRON and see lab results, grow story, and scan-to-earn rewards in 2.1 seconds.",
}

const STEPS = [
{
icon: "📱",
title: "Scan the strain QRON",
body: "Any phone camera works — no app to download. The strain QRON resolves to an AuthiChain record in 2.1 seconds.",
},
{
icon: "🧪",
title: "See the full panel",
body: "Potency, terpenes, pesticide and heavy-metal screens, lab signature, and batch date — exactly as the licensed lab submitted them.",
},
{
icon: "🌱",
title: "See the grow story",
body: "Cultivator facility, cultivar lineage, cure notes, and the branded QRON art. The story that belongs to the product travels with it.",
},
{
icon: "🎁",
title: "Scan to earn",
body: "Every authenticated scan earns QRON rewards the consumer can redeem on their next dispensary visit. Verification becomes a loyalty loop.",
},
]

const OUTCOMES = [
"2.1-second verification on any phone, no app",
"Full signed lab panel on every scan",
"Grow story + branded QRON art travels with the product",
"Scan-to-earn loyalty rewards in QRON",
]

const body: CSSProperties = { background: "#080808", color: "#e5e5e5", minHeight: "100vh", fontFamily: "system-ui,sans-serif" }
const nav: CSSProperties = { padding: "16px 32px", display: "flex", alignItems: "center", gap: 16, borderBottom: "0.5px solid rgba(255,255,255,.07)" }
const stepCard: CSSProperties = { background: "rgba(255,255,255,.03)", border: "1px solid rgba(34,197,94,.15)", borderRadius: 14, padding: "22px 20px" }

export default function ConsumerDemoPage() {
return (
<main style={body}>
<nav style={nav}>
<a href="/strainchain" style={{ color: "#22c55e", fontWeight: 900, fontSize: "1rem", letterSpacing: ".1em", textDecoration: "none" }}>
🌿 STRAINCHAIN
</a>
<div style={{ flex: 1 }} />
<a href="/strainchain/demos" style={{ color: "rgba(255,255,255,.4)", textDecoration: "none", fontSize: 12 }}>
← all persona demos
</a>
</nav>

<section style={{ maxWidth: 860, margin: "0 auto", padding: "72px 24px 32px" }}>
<div style={{ display: "inline-block", background: "rgba(34,197,94,.1)", border: "1px solid rgba(34,197,94,.3)", color: "#22c55e", padding: "5px 16px", borderRadius: 20, fontSize: 11, fontWeight: 600, textTransform: "uppercase", letterSpacing: ".1em", marginBottom: 24 }}>
📱 Persona · Consumer
</div>
<h1 style={{ fontSize: "clamp(28px,5vw,48px)", fontWeight: 900, lineHeight: 1.1, marginBottom: 18 }}>
Scan it. <span style={{ color: "#22c55e" }}>Trust it. Earn on it.</span>
</h1>
<p style={{ color: "rgba(255,255,255,.55)", fontSize: "clamp(14px,1.8vw,17px)", lineHeight: 1.75, maxWidth: 640 }}>
Consumers shouldn&rsquo;t have to take a label&rsquo;s word for it. StrainChain lets any phone scan
the strain QRON and see the signed lab panel, grow story, and licensed chain of custody — and rewards
the consumer with QRON every time they verify.
</p>
</section>

<section style={{ maxWidth: 860, margin: "0 auto", padding: "16px 24px 32px" }}>
<div style={{ display: "grid", gridTemplateColumns: "repeat(auto-fit,minmax(260px,1fr))", gap: 16 }}>
{STEPS.map((s, i) => (
<div key={i} style={stepCard}>
<div style={{ fontSize: 28, marginBottom: 12 }}>{s.icon}</div>
<div style={{ fontSize: 11, color: "rgba(34,197,94,.7)", textTransform: "uppercase", letterSpacing: ".1em", marginBottom: 6 }}>Step {i + 1}</div>
<div style={{ fontWeight: 700, fontSize: 15, color: "#fff", marginBottom: 8 }}>{s.title}</div>
<div style={{ fontSize: 13, color: "rgba(255,255,255,.55)", lineHeight: 1.6 }}>{s.body}</div>
</div>
))}
</div>
</section>

<section style={{ maxWidth: 860, margin: "0 auto", padding: "24px 24px 72px" }}>
<div style={{ background: "rgba(34,197,94,.06)", border: "1.5px solid rgba(34,197,94,.25)", borderRadius: 18, padding: "32px 28px" }}>
<h2 style={{ fontSize: 22, fontWeight: 800, marginBottom: 16 }}>What you get</h2>
<ul style={{ listStyle: "none", padding: 0, margin: 0 }}>
{OUTCOMES.map((o, i) => (
<li key={i} style={{ padding: "8px 0", borderBottom: i === OUTCOMES.length - 1 ? "none" : "1px solid rgba(255,255,255,.05)", color: "rgba(255,255,255,.7)" }}>
<span style={{ color: "#22c55e", marginRight: 10 }}>✓</span>
{o}
</li>
))}
</ul>
<div style={{ marginTop: 28, display: "flex", gap: 12, flexWrap: "wrap" }}>
<a href="/verify/STRAIN-SC-OG-KUSH-2026" style={{ background: "#22c55e", color: "#000", padding: "13px 28px", borderRadius: 10, textDecoration: "none", fontWeight: 800, fontSize: 14 }}>
Try a live consumer scan
</a>
<a href="/strainchain/demos" style={{ border: "1px solid rgba(34,197,94,.3)", color: "#22c55e", padding: "13px 24px", borderRadius: 10, textDecoration: "none", fontSize: 14 }}>
Other personas
</a>
</div>
</div>
</section>
</main>
)
}
113 changes: 113 additions & 0 deletions app/strainchain/demos/cultivator/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
/**
* Demo: StrainChain — Cultivator
* Problem: Licensed cultivators have no clean way to prove that a specific batch — from clone to package — was grown, cured, and handled under their licence, leaving craft flower indistinguishable from diverted product on the shelf.
* Solution: AuthiChain + QRON verifies authenticity in 2.1 seconds through the StrainChain protocol.
* Business Value: Every batch gets a StrainChain identity bound to the cultivator&rsquo;s AuthiChain licence and packaged with a strain-specific QRON, turning craft provenance into a shelf-level marketing asset and a METRC-ready audit trail.
*/
import type { CSSProperties } from "react"

export const metadata = {
title: "StrainChain Demo — Cultivator Flow",
description:
"Licensed growers mint a StrainChain batch, bind it to their AuthiChain identity, and ship it with a strain-specific QRON — all in one flow.",
}

const STEPS = [
{
icon: "🌱",
title: "Clone → Veg → Flower",
body: "The grow team logs each phase of the life cycle against a StrainChain batch ID. Facility, room, and operator are bound to the cultivator&rsquo;s AuthiChain identity at every step.",
},
{
icon: "✂️",
title: "Harvest + cure",
body: "Dry weight, cure conditions, and trim events anchor to the same batch. The ledger is tamper-evident, so re-labelling diverted product becomes impossible.",
},
{
icon: "🎨",
title: "QRON art for the strain",
body: "A QRON is generated in the cultivar&rsquo;s visual language — emerald, trichome frost, soil tones — and bound to the batch. It ships on the exit label and certificate.",
},
{
icon: "📦",
title: "Package + METRC sync",
body: "At package, StrainChain writes the batch to AuthiChain on Polygon and reconciles it with METRC in the same transaction. No manual data entry.",
},
]

const OUTCOMES = [
"Craft batch provenance provable from clone to package",
"Strain-specific QRON art on every exit bag and label",
"METRC + AuthiChain reconciled automatically at package",
"Dispensary buyers can verify your licence before they order",
]

const body: CSSProperties = { background: "#080808", color: "#e5e5e5", minHeight: "100vh", fontFamily: "system-ui,sans-serif" }
const nav: CSSProperties = { padding: "16px 32px", display: "flex", alignItems: "center", gap: 16, borderBottom: "0.5px solid rgba(255,255,255,.07)" }
const stepCard: CSSProperties = { background: "rgba(255,255,255,.03)", border: "1px solid rgba(34,197,94,.15)", borderRadius: 14, padding: "22px 20px" }

export default function CultivatorDemoPage() {
return (
<main style={body}>
<nav style={nav}>
<a href="/strainchain" style={{ color: "#22c55e", fontWeight: 900, fontSize: "1rem", letterSpacing: ".1em", textDecoration: "none" }}>
🌿 STRAINCHAIN
</a>
<div style={{ flex: 1 }} />
<a href="/strainchain/demos" style={{ color: "rgba(255,255,255,.4)", textDecoration: "none", fontSize: 12 }}>
← all persona demos
</a>
</nav>

<section style={{ maxWidth: 860, margin: "0 auto", padding: "72px 24px 32px" }}>
<div style={{ display: "inline-block", background: "rgba(34,197,94,.1)", border: "1px solid rgba(34,197,94,.3)", color: "#22c55e", padding: "5px 16px", borderRadius: 20, fontSize: 11, fontWeight: 600, textTransform: "uppercase", letterSpacing: ".1em", marginBottom: 24 }}>
🌱 Persona · Cultivator
</div>
<h1 style={{ fontSize: "clamp(28px,5vw,48px)", fontWeight: 900, lineHeight: 1.1, marginBottom: 18 }}>
Clone to exit bag, <span style={{ color: "#22c55e" }}>signed forever</span>
</h1>
<p style={{ color: "rgba(255,255,255,.55)", fontSize: "clamp(14px,1.8vw,17px)", lineHeight: 1.75, maxWidth: 640 }}>
Licensed cultivators are losing shelf space to diverted product that looks identical on the label.
StrainChain binds every StrainChain batch to your AuthiChain identity and packages it with a
strain-specific QRON — so buyers, budtenders, and consumers can see that what you grew is what
they&rsquo;re holding.
</p>
</section>

<section style={{ maxWidth: 860, margin: "0 auto", padding: "16px 24px 32px" }}>
<div style={{ display: "grid", gridTemplateColumns: "repeat(auto-fit,minmax(260px,1fr))", gap: 16 }}>
{STEPS.map((s, i) => (
<div key={i} style={stepCard}>
<div style={{ fontSize: 28, marginBottom: 12 }}>{s.icon}</div>
<div style={{ fontSize: 11, color: "rgba(34,197,94,.7)", textTransform: "uppercase", letterSpacing: ".1em", marginBottom: 6 }}>Step {i + 1}</div>
<div style={{ fontWeight: 700, fontSize: 15, color: "#fff", marginBottom: 8 }}>{s.title}</div>
<div style={{ fontSize: 13, color: "rgba(255,255,255,.55)", lineHeight: 1.6 }}>{s.body}</div>
</div>
))}
</div>
</section>

<section style={{ maxWidth: 860, margin: "0 auto", padding: "24px 24px 72px" }}>
<div style={{ background: "rgba(34,197,94,.06)", border: "1.5px solid rgba(34,197,94,.25)", borderRadius: 18, padding: "32px 28px" }}>
<h2 style={{ fontSize: 22, fontWeight: 800, marginBottom: 16 }}>What you get</h2>
<ul style={{ listStyle: "none", padding: 0, margin: 0 }}>
{OUTCOMES.map((o, i) => (
<li key={i} style={{ padding: "8px 0", borderBottom: i === OUTCOMES.length - 1 ? "none" : "1px solid rgba(255,255,255,.05)", color: "rgba(255,255,255,.7)" }}>
<span style={{ color: "#22c55e", marginRight: 10 }}>✓</span>
{o}
</li>
))}
</ul>
<div style={{ marginTop: 28, display: "flex", gap: 12, flexWrap: "wrap" }}>
<a href="mailto:z@authichain.com?subject=StrainChain%20Cultivator%20Onboarding" style={{ background: "#22c55e", color: "#000", padding: "13px 28px", borderRadius: 10, textDecoration: "none", fontWeight: 800, fontSize: 14 }}>
Onboard my cultivation facility
</a>
<a href="/strainchain/demos" style={{ border: "1px solid rgba(34,197,94,.3)", color: "#22c55e", padding: "13px 24px", borderRadius: 10, textDecoration: "none", fontSize: 14 }}>
Other personas
</a>
</div>
</div>
</section>
</main>
)
}
112 changes: 112 additions & 0 deletions app/strainchain/demos/dispensary/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
/**
* Demo: StrainChain — Dispensary
* Problem: Dispensaries receive product from dozens of distributors every week and have no fast way to confirm that every SKU was grown by a licensed cultivator, tested by a licensed lab, and reconciled with METRC before it hits the shelf.
* Solution: AuthiChain + QRON verifies authenticity in 2.1 seconds through the StrainChain protocol.
* Business Value: Budtenders scan each package on receipt and at point of sale — confirming licensed origin, COA integrity, and METRC reconciliation in one tap — and the dispensary turns verification into a loyalty loop with consumer scan-to-earn rewards.
*/
import type { CSSProperties } from "react"

export const metadata = {
title: "StrainChain Demo — Dispensary Flow",
description:
"Dispensaries scan StrainChain packages on receipt and at POS to confirm licensed origin, COA integrity, and METRC reconciliation in one tap.",
}

const STEPS = [
{
icon: "📥",
title: "Receive + scan on intake",
body: "Every incoming package is scanned at the back door. StrainChain confirms the cultivator licence, lab COA, and METRC manifest in 2.1 seconds — bad product never reaches the floor.",
},
{
icon: "📚",
title: "Shelf-level proof",
body: "Budtenders see a live verification badge on every SKU. They can show a customer the full seed-to-sale chain on a tablet in seconds.",
},
{
icon: "💳",
title: "Scan-to-sell at POS",
body: "At checkout, the POS scan signs the final custody event and binds the sale to the buyer&rsquo;s optional loyalty profile.",
},
{
icon: "🎁",
title: "Scan-to-earn loyalty",
body: "Customers scan the strain QRON after they leave and earn QRON rewards that can be redeemed on their next visit — the scan becomes a repeat-visit driver.",
},
]

const OUTCOMES = [
"Receiving speed: 5× faster than manual manifest checks",
"Zero unlicensed or unreconciled SKUs on the shelf",
"Built-in scan-to-earn loyalty engine powered by QRON",
"Audit-ready on the spot for state inspectors",
]

const body: CSSProperties = { background: "#080808", color: "#e5e5e5", minHeight: "100vh", fontFamily: "system-ui,sans-serif" }
const nav: CSSProperties = { padding: "16px 32px", display: "flex", alignItems: "center", gap: 16, borderBottom: "0.5px solid rgba(255,255,255,.07)" }
const stepCard: CSSProperties = { background: "rgba(255,255,255,.03)", border: "1px solid rgba(34,197,94,.15)", borderRadius: 14, padding: "22px 20px" }

export default function DispensaryDemoPage() {
return (
<main style={body}>
<nav style={nav}>
<a href="/strainchain" style={{ color: "#22c55e", fontWeight: 900, fontSize: "1rem", letterSpacing: ".1em", textDecoration: "none" }}>
🌿 STRAINCHAIN
</a>
<div style={{ flex: 1 }} />
<a href="/strainchain/demos" style={{ color: "rgba(255,255,255,.4)", textDecoration: "none", fontSize: 12 }}>
← all persona demos
</a>
</nav>

<section style={{ maxWidth: 860, margin: "0 auto", padding: "72px 24px 32px" }}>
<div style={{ display: "inline-block", background: "rgba(34,197,94,.1)", border: "1px solid rgba(34,197,94,.3)", color: "#22c55e", padding: "5px 16px", borderRadius: 20, fontSize: 11, fontWeight: 600, textTransform: "uppercase", letterSpacing: ".1em", marginBottom: 24 }}>
🏪 Persona · Dispensary
</div>
<h1 style={{ fontSize: "clamp(28px,5vw,48px)", fontWeight: 900, lineHeight: 1.1, marginBottom: 18 }}>
Scan to stock, <span style={{ color: "#22c55e" }}>scan to sell</span>
</h1>
<p style={{ color: "rgba(255,255,255,.55)", fontSize: "clamp(14px,1.8vw,17px)", lineHeight: 1.75, maxWidth: 640 }}>
Dispensaries are drowning in manifests. StrainChain turns receiving and POS into a single-tap
verification: licensed cultivator, signed COA, METRC reconciled. No EDI, no integration pain — just
a scan that resolves to an AuthiChain record in 2.1 seconds.
</p>
</section>

<section style={{ maxWidth: 860, margin: "0 auto", padding: "16px 24px 32px" }}>
<div style={{ display: "grid", gridTemplateColumns: "repeat(auto-fit,minmax(260px,1fr))", gap: 16 }}>
{STEPS.map((s, i) => (
<div key={i} style={stepCard}>
<div style={{ fontSize: 28, marginBottom: 12 }}>{s.icon}</div>
<div style={{ fontSize: 11, color: "rgba(34,197,94,.7)", textTransform: "uppercase", letterSpacing: ".1em", marginBottom: 6 }}>Step {i + 1}</div>
<div style={{ fontWeight: 700, fontSize: 15, color: "#fff", marginBottom: 8 }}>{s.title}</div>
<div style={{ fontSize: 13, color: "rgba(255,255,255,.55)", lineHeight: 1.6 }}>{s.body}</div>
</div>
))}
</div>
</section>

<section style={{ maxWidth: 860, margin: "0 auto", padding: "24px 24px 72px" }}>
<div style={{ background: "rgba(34,197,94,.06)", border: "1.5px solid rgba(34,197,94,.25)", borderRadius: 18, padding: "32px 28px" }}>
<h2 style={{ fontSize: 22, fontWeight: 800, marginBottom: 16 }}>What you get</h2>
<ul style={{ listStyle: "none", padding: 0, margin: 0 }}>
{OUTCOMES.map((o, i) => (
<li key={i} style={{ padding: "8px 0", borderBottom: i === OUTCOMES.length - 1 ? "none" : "1px solid rgba(255,255,255,.05)", color: "rgba(255,255,255,.7)" }}>
<span style={{ color: "#22c55e", marginRight: 10 }}>✓</span>
{o}
</li>
))}
</ul>
<div style={{ marginTop: 28, display: "flex", gap: 12, flexWrap: "wrap" }}>
<a href="mailto:z@authichain.com?subject=StrainChain%20Dispensary%20Partnership" style={{ background: "#22c55e", color: "#000", padding: "13px 28px", borderRadius: 10, textDecoration: "none", fontWeight: 800, fontSize: 14 }}>
Partner my dispensary
</a>
<a href="/strainchain/demos" style={{ border: "1px solid rgba(34,197,94,.3)", color: "#22c55e", padding: "13px 24px", borderRadius: 10, textDecoration: "none", fontSize: 14 }}>
Other personas
</a>
</div>
</div>
</section>
</main>
)
}
Loading
Loading