CodeIssuesPull RequestsActionsSecurityInsights
✨ AI
More
Settings

Fix critical build errors: remove duplicate JSX routes and async client component conflict #4672

Draft⚡ AI-generatedXLccantynz wants to mergecopilot/fix-build-errors-remove-duplicate-routesmain↑3 ↓7opened Mar 23, 20263/4 tasksLive: 0 editing
7 changed files+0−504
Modifiedpackage-lock.json+0−11View fileUnifiedSplit
14601460 "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
14611461 "dev": true,
14621462 "license": "MIT",
1463 "peer": true,
14641463 "bin": {
14651464 "acorn": "bin/acorn"
14661465 },
18951894 }
18961895 ],
18971896 "license": "MIT",
1898 "peer": true,
18991897 "dependencies": {
19001898 "baseline-browser-mapping": "^2.9.0",
19011899 "caniuse-lite": "^1.0.30001759",
25352533 "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.",
25362534 "dev": true,
25372535 "license": "MIT",
2538 "peer": true,
25392536 "dependencies": {
25402537 "@eslint-community/eslint-utils": "^4.2.0",
25412538 "@eslint-community/regexpp": "^4.6.1",
27042701 "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==",
27052702 "dev": true,
27062703 "license": "MIT",
2707 "peer": true,
27082704 "dependencies": {
27092705 "@rtsao/scc": "^1.1.0",
27102706 "array-includes": "^3.1.9",
47454741 "integrity": "sha512-0f8aRfBVL+mpzfBjYfQuLWh2WyAwtJXCRfkPF4UJ5qd2YwrHczsrSzXU4tRMV0OAxR8ZJZWPFn6uhSC56UTsLA==",
47464742 "deprecated": "This version has a security vulnerability. Please upgrade to a patched version. See https://nextjs.org/blog/security-update-2025-12-11 for more details.",
47474743 "license": "MIT",
4748 "peer": true,
47494744 "dependencies": {
47504745 "@next/env": "14.2.5",
47514746 "@swc/helpers": "0.5.5",
52475242 }
52485243 ],
52495244 "license": "MIT",
5250 "peer": true,
52515245 "dependencies": {
52525246 "nanoid": "^3.3.11",
52535247 "picocolors": "^1.1.1",
53375331 "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
53385332 "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
53395333 "license": "MIT",
5340 "peer": true,
53415334 "dependencies": {
53425335 "loose-envify": "^1.1.0"
53435336 },
53505343 "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
53515344 "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
53525345 "license": "MIT",
5353 "peer": true,
53545346 "dependencies": {
53555347 "loose-envify": "^1.1.0",
53565348 "scheduler": "^0.23.0"
62536245 "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
62546246 "dev": true,
62556247 "license": "MIT",
6256 "peer": true,
62576248 "engines": {
62586249 "node": ">=12"
62596250 },
64226413 "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
64236414 "dev": true,
64246415 "license": "Apache-2.0",
6425 "peer": true,
64266416 "bin": {
64276417 "tsc": "bin/tsc",
64286418 "tsserver": "bin/tsserver"
68226812 "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz",
68236813 "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==",
68246814 "license": "MIT",
6825 "peer": true,
68266815 "funding": {
68276816 "url": "https://github.com/sponsors/colinhacks"
68286817 }
Deletedsrc/app/(marketing)/faq/page.jsx+0−45View fileUnifiedSplit
1import { PageHeader, FAQAccordion, LogoCloud } from "../../../components/marketing/MarketingShell";
2
3export default function FaqPage() {
4 const items = [
5 {
6 q: "Why did changes not show earlier?",
7 a: "Because builds were failing. Vercel correctly pins the last green deployment. Now we only push when builds are green."
8 },
9 {
10 q: "Why are we using .jsx instead of .tsx?",
11 a: "To avoid TSX/JSX parsing landmines and keep the system reliably deployable. We can reintroduce TypeScript later."
12 },
13 {
14 q: "What does Dominat8 actually do?",
15 a: "It turns a brief into a full website spec, then runs agents to generate pages, apply SEO, produce sitemap/robots, and publish artifacts."
16 },
17 {
18 q: "How do I know production updated?",
19 a: "Open /__status and compare the marker. If it changed, production changed."
20 }
21 ];
22
23 return (
24 <main>
25 <PageHeader
26 eyebrow="FAQ"
27 title="Clear answers, no guesswork"
28 subtitle="The fastest way to stay sane: markers + build-gated shipping."
29 rightSlot={
30 <a className="rounded-2xl bg-slate-900 px-5 py-3 text-sm font-semibold text-white hover:bg-slate-800 shadow-sm" href="/__status">
31 Check status
32 </a>
33 }
34 />
35
36 <LogoCloud label="Designed for calm shipping" />
37
38 <div className="mx-auto max-w-6xl px-6 pb-16">
39 <div className="rounded-3xl bg-white/85 p-8 ring-1 ring-slate-200 shadow-sm">
40 <FAQAccordion items={items} />
41 </div>
42 </div>
43 </main>
44 );
45}
Deletedsrc/app/(marketing)/pricing/page.jsx+0−129View fileUnifiedSplit
1import { PageHeader, SectionHeader, LogoCloud, FAQAccordion } from "../../../components/marketing/MarketingShell";
2
3function PriceCard({ name, price, note, bullets, primary, ctaText, ctaHref, badge }) {
4 return (
5 <div className={primary ? "rounded-3xl bg-slate-900 p-6 text-white shadow-sm" : "rounded-3xl bg-white/90 p-6 ring-1 ring-slate-200 shadow-sm"}>
6 {badge ? (
7 <div className={primary ? "inline-flex items-center rounded-full bg-white/10 px-3 py-1 text-xs text-white/80 ring-1 ring-white/15" : "inline-flex items-center rounded-full bg-slate-900 px-3 py-1 text-xs text-white ring-1 ring-slate-900"}>
8 {badge}
9 </div>
10 ) : null}
11
12 <div className={primary ? "mt-3 text-xs text-white/70" : "mt-3 text-xs text-slate-500"}>{name}</div>
13 <div className={primary ? "mt-2 text-3xl font-semibold" : "mt-2 text-3xl font-semibold text-slate-950"}>{price}</div>
14 <div className={primary ? "mt-2 text-sm text-white/75" : "mt-2 text-sm text-slate-700"}>{note}</div>
15
16 <ul className={primary ? "mt-5 space-y-2 text-sm text-white/80" : "mt-5 space-y-2 text-sm text-slate-700"}>
17 {bullets.map((b) => <li key={b}>• {b}</li>)}
18 </ul>
19
20 <a
21 className={primary
22 ? "mt-6 inline-flex w-full justify-center rounded-2xl bg-white px-4 py-3 text-sm font-semibold text-slate-900 hover:bg-white/90"
23 : "mt-6 inline-flex w-full justify-center rounded-2xl bg-slate-900 px-4 py-3 text-sm font-semibold text-white hover:bg-slate-800"}
24 href={ctaHref}
25 >
26 {ctaText}
27 </a>
28 </div>
29 );
30}
31
32export default function PricingPage() {
33 const faq = [
34 { q: "Do I need to be a designer?", a: "No. The system uses proven layout rhythm and spacing so your site looks premium by default." },
35 { q: "How do I know production updated?", a: "Open /__status and compare the marker. If it changed, production changed." },
36 { q: "Why do we build-gate upgrades?", a: "So you never lose time to silent deploy pins. Green builds only = shipping confidence." },
37 { q: "Can I map my domain?", a: "Yes — the platform is designed to publish and map to your domain when ready." }
38 ];
39
40 return (
41 <main>
42 <PageHeader
43 eyebrow="Pricing"
44 title="Simple pricing, premium output"
45 subtitle="Start free. Upgrade when you want full automation and faster publishing. Clear tiers, no confusion."
46 rightSlot={
47 <a className="rounded-2xl bg-slate-900 px-5 py-3 text-sm font-semibold text-white hover:bg-slate-800 shadow-sm" href="/p/new">
48 Generate my site
49 </a>
50 }
51 />
52
53 <LogoCloud label="Trusted premium SaaS rhythm" />
54
55 <div className="mx-auto max-w-6xl px-6 pb-12">
56 <div className="grid gap-5 md:grid-cols-3">
57 <PriceCard
58 name="Free"
59 price="$0"
60 note="Perfect to test the pipeline."
61 bullets={["Generate a site spec", "Preview marketing pages", "Basic publish flow"]}
62 ctaText="Start free"
63 ctaHref="/p/new"
64 />
65
66 <PriceCard
67 name="Pro"
68 price="$29"
69 note="Ship faster with full automation."
70 bullets={["Auto-run pipeline", "SEO plan + sitemap", "Publish artifacts"]}
71 primary
72 badge="Most popular"
73 ctaText="Go Pro"
74 ctaHref="/p/new"
75 />
76
77 <PriceCard
78 name="Business"
79 price="$99"
80 note="For teams & higher volume."
81 bullets={["Multiple sites", "Priority pipeline", "Advanced controls"]}
82 ctaText="Talk to us"
83 ctaHref="/contact"
84 />
85 </div>
86 </div>
87
88 <div className="pb-12">
89 <SectionHeader
90 eyebrow="Included"
91 title="What you’re really paying for"
92 subtitle="A pipeline that stays consistent, builds cleanly, and publishes confidently."
93 linkText="Explore templates"
94 linkHref="/templates"
95 />
96 <div className="mx-auto max-w-6xl px-6 pt-8">
97 <div className="rounded-3xl bg-white/85 p-8 ring-1 ring-slate-200 shadow-sm">
98 <div className="grid gap-5 md:grid-cols-3">
99 <div className="rounded-2xl bg-white p-6 ring-1 ring-slate-200">
100 <div className="text-sm font-semibold text-slate-950">Premium structure</div>
101 <div className="mt-2 text-sm text-slate-700">Hero rhythm, trust strip, features, proof, CTA ladder.</div>
102 </div>
103 <div className="rounded-2xl bg-white p-6 ring-1 ring-slate-200">
104 <div className="text-sm font-semibold text-slate-950">SEO included</div>
105 <div className="mt-2 text-sm text-slate-700">Titles, metas, schema, sitemap/robots — built into the flow.</div>
106 </div>
107 <div className="rounded-2xl bg-white p-6 ring-1 ring-slate-200">
108 <div className="text-sm font-semibold text-slate-950">Build-gated shipping</div>
109 <div className="mt-2 text-sm text-slate-700">No more “did it deploy?” — green builds only.</div>
110 </div>
111 </div>
112 </div>
113 </div>
114 </div>
115
116 <div className="mx-auto max-w-6xl px-6 pb-16">
117 <div className="rounded-3xl bg-white/85 p-8 ring-1 ring-slate-200 shadow-sm">
118 <div className="text-xs font-semibold text-slate-600">FAQ</div>
119 <h2 className="mt-2 text-2xl font-semibold tracking-tight text-slate-950 md:text-3xl">
120 Clear answers
121 </h2>
122 <div className="mt-6">
123 <FAQAccordion items={faq} />
124 </div>
125 </div>
126 </div>
127 </main>
128 );
129}
Deletedsrc/app/(marketing)/templates/page.jsx+0−69View fileUnifiedSplit
1import { PageHeader, SectionHeader, TemplateGalleryCard, LogoCloud } from "../../../components/marketing/MarketingShell";
2
3export default function TemplatesPage() {
4 return (
5 <main>
6 <PageHeader
7 eyebrow="Templates"
8 title="Premium templates, ready to ship"
9 subtitle="Pick a direction. The system generates a complete site from your brief — then polishes it into something that looks expensive."
10 rightSlot={
11 <a className="rounded-2xl bg-slate-900 px-5 py-3 text-sm font-semibold text-white hover:bg-slate-800 shadow-sm" href="/p/new">
12 Start generating
13 </a>
14 }
15 />
16
17 <LogoCloud label="Designed for conversion rhythm" />
18
19 <SectionHeader
20 eyebrow="Gallery"
21 title="Choose a starting point"
22 subtitle="These are structured patterns. Your content and branding makes it yours."
23 linkText="See pricing"
24 linkHref="/pricing"
25 />
26
27 <div className="mx-auto max-w-6xl px-6 pt-8 pb-14">
28 <div className="grid gap-5 md:grid-cols-3">
29 <TemplateGalleryCard
30 tag="Default"
31 title="AI SaaS Website"
32 desc="Clean SaaS layout: hero, proof, features, pricing, FAQ, CTA."
33 href="/p/new"
34 />
35 <TemplateGalleryCard
36 tag="High trust"
37 title="Local Service"
38 desc="Trust-first layout: outcomes, testimonials, areas served, contact."
39 href="/p/new"
40 />
41 <TemplateGalleryCard
42 tag="Showcase"
43 title="Creator / Portfolio"
44 desc="Highlights, case studies, gallery, and social proof."
45 href="/p/new"
46 />
47 <TemplateGalleryCard
48 tag="Commerce"
49 title="Product Landing"
50 desc="Feature-led layout: benefits, comparison, proof, FAQ, CTA."
51 href="/p/new"
52 />
53 <TemplateGalleryCard
54 tag="B2B"
55 title="Agency"
56 desc="Services, proof, process, packages, and contact."
57 href="/p/new"
58 />
59 <TemplateGalleryCard
60 tag="Launch"
61 title="Coming Soon"
62 desc="Waitlist-first: clarity, benefits, trust, and CTA."
63 href="/p/new"
64 />
65 </div>
66 </div>
67 </main>
68 );
69}
Deletedsrc/app/(marketing)/use-cases/page.jsx+0−41View fileUnifiedSplit
1import { PageHeader, CardGrid, Card, LogoCloud } from "../../../components/marketing/MarketingShell";
2
3export default function UseCasesPage() {
4 return (
5 <main>
6 <PageHeader
7 eyebrow="Use cases"
8 title="Built for people who need premium fast"
9 subtitle="If you need a website that looks expensive, ships fast, and stays consistent — this is for you."
10 rightSlot={
11 <a className="rounded-2xl bg-slate-900 px-5 py-3 text-sm font-semibold text-white hover:bg-slate-800 shadow-sm" href="/templates">
12 Explore templates
13 </a>
14 }
15 />
16
17 <LogoCloud label="Trusted rhythm across pages" />
18
19 <CardGrid>
20 <Card
21 title="Founders launching fast"
22 desc="Generate a real marketing site in minutes, not weeks. Iterate without breaking your build."
23 href="/pricing"
24 meta="Startup"
25 />
26 <Card
27 title="Agencies & freelancers"
28 desc="Deliver faster with a pipeline you can control. Keep every client site consistent."
29 href="/pricing"
30 meta="Production"
31 />
32 <Card
33 title="Local businesses"
34 desc="High trust pages, clean design, and clear CTAs — ready to publish on your domain."
35 href="/contact"
36 meta="Trust"
37 />
38 </CardGrid>
39 </main>
40 );
41}
Modifiedsrc/app/admin/projects/page.tsx+0−2View fileUnifiedSplit
1"use client";
2
31import React from "react";
42import Link from "next/link";
53
Deletedsrc/app/page.jsx+0−207View fileUnifiedSplit
1import Link from "next/link";
2import { buildMarker } from "@/src/lib/buildMarker";
3import HeroGlow from "@/src/components/marketing/HeroGlow";
4
5/**
6 * Force dynamic rendering to avoid “stale/static/cached HTML” confusion on homepage.
7 * This makes updates show up reliably after deploy.
8 */
9export const dynamic = "force-dynamic";
10export const revalidate = 0;
11
12export default function HomePage() {
13 return (
14 <main className="d8-page">
15 {/* Deploy-proof marker (view-source / curl grep friendly) */}
16 <span className="d8-marker" aria-hidden="true">
17 {buildMarker()}
18 </span>
19
20 {/* FULL-SCREEN HERO TAKEOVER */}
21 <section className="d8-hero-full">
22 {/* WOW background layers (CSS-only) */}
23 <div className="d8-wow-bg" aria-hidden="true">
24 <div className="d8-orb d8-orb-a" />
25 <div className="d8-orb d8-orb-b" />
26 <div className="d8-orb d8-orb-c" />
27 <div className="d8-grid" />
28 <div className="d8-noise" />
29 <div className="d8-vignette" />
30 </div>
31
32 {/* V8: TRUE cursor-follow glow (tiny JS sets CSS vars) */}
33 <HeroGlow>
34 <div className="d8-hero-inner">
35 <header className="d8-hero-copy">
36 <div className="d8-pill">
37 <span className="d8-dot" />
38 <span>Dominat8 — AI Website Automation Builder</span>
39 </div>
40
41 <h1 className="d8-h1">
42 The <span className="d8-grad">wow</span> website builder.
43 <br />
44 Built by AI. Shipped fast.
45 </h1>
46
47 <p className="d8-sub">
48 Describe your business. Dominat8 generates a premium homepage, pages, and structure —
49 ready to publish on your domain.
50 </p>
51
52 <div className="d8-cta-row">
53 <Link className="d8-btn d8-btn-primary" href="/sign-in">
54 Start building
55 </Link>
56 <Link className="d8-btn d8-btn-ghost" href="/templates">
57 Explore templates
58 </Link>
59 </div>
60
61 <div className="d8-trust">
62 <div className="d8-trust-item">⚡ Fast publish</div>
63 <div className="d8-trust-item">🔎 SEO-ready</div>
64 <div className="d8-trust-item">🌐 Custom domains</div>
65 <div className="d8-trust-item">🧠 Agent pipeline</div>
66 </div>
67 </header>
68
69 <aside className="d8-hero-card" aria-label="Preview card">
70 <div className="d8-card-top">
71 <div className="d8-card-dots">
72 <span />
73 <span />
74 <span />
75 </div>
76 <div className="d8-card-title">Live Preview</div>
77 </div>
78
79 <div className="d8-card-body">
80 <div className="d8-card-kicker">AI-generated site blueprint</div>
81
82 <div className="d8-mock">
83 <div className="d8-mock-hero">
84 <div className="d8-mock-title" />
85 <div className="d8-mock-sub" />
86 <div className="d8-mock-sub d8-mock-sub2" />
87 <div className="d8-mock-btnrow">
88 <div className="d8-mock-btn" />
89 <div className="d8-mock-btn d8-mock-btn2" />
90 </div>
91 </div>
92 <div className="d8-mock-grid">
93 <div className="d8-mock-tile" />
94 <div className="d8-mock-tile" />
95 <div className="d8-mock-tile" />
96 <div className="d8-mock-tile" />
97 </div>
98 </div>
99
100 <div className="d8-card-foot">
101 <span className="d8-tag">V8 True Glow</span>
102 <span className="d8-tag">Full-screen</span>
103 <span className="d8-tag">Build-gated</span>
104 </div>
105 </div>
106 </aside>
107 </div>
108
109 {/* Scroll hint */}
110 <div className="d8-scroll-hint" aria-hidden="true">
111 <span className="d8-scroll-dot" />
112 <span className="d8-scroll-text">Scroll</span>
113 </div>
114 </HeroGlow>
115 </section>
116
117 {/* SITEGROUND-STYLE STRUCTURE BELOW THE FOLD */}
118 <section className="d8-logos">
119 <div className="d8-wrap">
120 <div className="d8-logos-title">Trusted by builders who want a premium look</div>
121 <div className="d8-logos-row" aria-label="Logo strip">
122 <div className="d8-logo-pill">Agencies</div>
123 <div className="d8-logo-pill">Founders</div>
124 <div className="d8-logo-pill">Local business</div>
125 <div className="d8-logo-pill">Creators</div>
126 <div className="d8-logo-pill">E-commerce</div>
127 </div>
128 </div>
129 </section>
130
131 <section className="d8-how">
132 <div className="d8-wrap">
133 <h2 className="d8-h2">How it works</h2>
134 <p className="d8-lead">Three steps. Clean output. Fast publishing.</p>
135
136 <div className="d8-how-grid">
137 <div className="d8-step">
138 <div className="d8-step-num">1</div>
139 <div className="d8-step-title">Describe</div>
140 <div className="d8-step-sub">Tell us what you do and the vibe you want.</div>
141 </div>
142 <div className="d8-step">
143 <div className="d8-step-num">2</div>
144 <div className="d8-step-title">Generate</div>
145 <div className="d8-step-sub">Agents build pages, layout, and SEO structure.</div>
146 </div>
147 <div className="d8-step">
148 <div className="d8-step-num">3</div>
149 <div className="d8-step-title">Publish</div>
150 <div className="d8-step-sub">Push live on your domain. Iterate instantly.</div>
151 </div>
152 </div>
153 </div>
154 </section>
155
156 <section className="d8-proof">
157 <div className="d8-wrap">
158 <div className="d8-proof-grid">
159 <div className="d8-proof-card">
160 <div className="d8-proof-kicker">Premium by default</div>
161 <div className="d8-proof-title">Design that looks expensive</div>
162 <div className="d8-proof-sub">Modern lighting, depth, and typography — without a designer.</div>
163 </div>
164
165 <div className="d8-proof-card">
166 <div className="d8-proof-kicker">Built to rank</div>
167 <div className="d8-proof-title">SEO-ready structure</div>
168 <div className="d8-proof-sub">Clean metadata, headings, and page structure from day one.</div>
169 </div>
170
171 <div className="d8-proof-card">
172 <div className="d8-proof-kicker">Fast execution</div>
173 <div className="d8-proof-title">Agents do the heavy lifting</div>
174 <div className="d8-proof-sub">From spec to publish — streamlined and repeatable.</div>
175 </div>
176 </div>
177 </div>
178 </section>
179
180 <section className="d8-final-cta">
181 <div className="d8-wrap">
182 <div className="d8-final-box">
183 <div>
184 <div className="d8-final-title">Ready to build your best site?</div>
185 <div className="d8-final-sub">Generate a premium homepage and publish it fast.</div>
186 </div>
187 <div className="d8-final-actions">
188 <Link className="d8-btn d8-btn-primary" href="/sign-in">Start building</Link>
189 <Link className="d8-btn d8-btn-ghost" href="/pricing">See pricing</Link>
190 </div>
191 </div>
192
193 <footer className="d8-footer">
194 <div className="d8-footer-left">© {new Date().getFullYear()} Dominat8</div>
195 <div className="d8-footer-right">
196 <Link className="d8-footer-link" href="/templates">Templates</Link>
197 <span className="d8-footer-dot"></span>
198 <Link className="d8-footer-link" href="/use-cases">Use cases</Link>
199 <span className="d8-footer-dot"></span>
200 <Link className="d8-footer-link" href="/pricing">Pricing</Link>
201 </div>
202 </footer>
203 </div>
204 </section>
205 </main>
206 );
207}
2080
c comment · e edit title · m merge · a approve · r request changes · ? shortcuts