diff --git a/app/(app)/admin/email-broadcast/EmailBroadcastForm.tsx b/app/(app)/dashboard/admin/email-broadcast/EmailBroadcastForm.tsx
similarity index 100%
rename from app/(app)/admin/email-broadcast/EmailBroadcastForm.tsx
rename to app/(app)/dashboard/admin/email-broadcast/EmailBroadcastForm.tsx
diff --git a/app/(app)/admin/email-broadcast/page.tsx b/app/(app)/dashboard/admin/email-broadcast/page.tsx
similarity index 97%
rename from app/(app)/admin/email-broadcast/page.tsx
rename to app/(app)/dashboard/admin/email-broadcast/page.tsx
index da14809c..652f8698 100644
--- a/app/(app)/admin/email-broadcast/page.tsx
+++ b/app/(app)/dashboard/admin/email-broadcast/page.tsx
@@ -27,7 +27,7 @@ export default async function EmailBroadcastPage() {
← Admin
diff --git a/app/(app)/admin/form.tsx b/app/(app)/dashboard/admin/form.tsx
similarity index 100%
rename from app/(app)/admin/form.tsx
rename to app/(app)/dashboard/admin/form.tsx
diff --git a/app/(app)/admin/github/setup/done/client.tsx b/app/(app)/dashboard/admin/github/setup/done/client.tsx
similarity index 98%
rename from app/(app)/admin/github/setup/done/client.tsx
rename to app/(app)/dashboard/admin/github/setup/done/client.tsx
index 257b4314..0b720ddb 100644
--- a/app/(app)/admin/github/setup/done/client.tsx
+++ b/app/(app)/dashboard/admin/github/setup/done/client.tsx
@@ -111,7 +111,7 @@ export function SetupDoneClient() {
Install App →
. End users do the same from their{" "}
-
+
personal GitHub settings page
.
diff --git a/app/(app)/admin/github/setup/done/page.tsx b/app/(app)/dashboard/admin/github/setup/done/page.tsx
similarity index 89%
rename from app/(app)/admin/github/setup/done/page.tsx
rename to app/(app)/dashboard/admin/github/setup/done/page.tsx
index ed4f66cb..c66b0010 100644
--- a/app/(app)/admin/github/setup/done/page.tsx
+++ b/app/(app)/dashboard/admin/github/setup/done/page.tsx
@@ -30,7 +30,7 @@ export default async function AdminGithubSetupDonePage() {
return (
-
+
← Admin
@@ -39,7 +39,7 @@ export default async function AdminGithubSetupDonePage() {
Copy each value into Railway, set them on both the Next.js app
and the worker service, then redeploy. After deploy, end users
can install the App from their own{" "}
-
+
GitHub settings page
.
diff --git a/app/(app)/admin/github/setup/page.tsx b/app/(app)/dashboard/admin/github/setup/page.tsx
similarity index 98%
rename from app/(app)/admin/github/setup/page.tsx
rename to app/(app)/dashboard/admin/github/setup/page.tsx
index 0ade5b7e..886b08fc 100644
--- a/app/(app)/admin/github/setup/page.tsx
+++ b/app/(app)/dashboard/admin/github/setup/page.tsx
@@ -86,7 +86,7 @@ export default async function AdminGithubSetupPage({
return (
-
+
← Admin
diff --git a/app/(app)/admin/integrations-form.tsx b/app/(app)/dashboard/admin/integrations-form.tsx
similarity index 100%
rename from app/(app)/admin/integrations-form.tsx
rename to app/(app)/dashboard/admin/integrations-form.tsx
diff --git a/app/(app)/admin/leads/page.tsx b/app/(app)/dashboard/admin/leads/page.tsx
similarity index 99%
rename from app/(app)/admin/leads/page.tsx
rename to app/(app)/dashboard/admin/leads/page.tsx
index 8fa8ae5f..0112c18c 100644
--- a/app/(app)/admin/leads/page.tsx
+++ b/app/(app)/dashboard/admin/leads/page.tsx
@@ -125,7 +125,7 @@ export default async function AdminLeadsPage() {
Leads
-
+
← Admin
diff --git a/app/(app)/admin/page.tsx b/app/(app)/dashboard/admin/page.tsx
similarity index 96%
rename from app/(app)/admin/page.tsx
rename to app/(app)/dashboard/admin/page.tsx
index 3cdba2f3..1ea9dfde 100644
--- a/app/(app)/admin/page.tsx
+++ b/app/(app)/dashboard/admin/page.tsx
@@ -95,7 +95,7 @@ export default async function AdminPage() {
URLs, and live audience counts per segment.
@@ -117,7 +117,7 @@ export default async function AdminPage() {
the App from their own settings page after the env is set.
-
+
{env.githubAppId ? "Re-register App" : "Register App"}
@@ -135,7 +135,7 @@ export default async function AdminPage() {
Email broadcast
Send a mass email to all registered users.
-
+
Compose & send →
diff --git a/app/(app)/admin/provider-costs-panel.tsx b/app/(app)/dashboard/admin/provider-costs-panel.tsx
similarity index 100%
rename from app/(app)/admin/provider-costs-panel.tsx
rename to app/(app)/dashboard/admin/provider-costs-panel.tsx
diff --git a/app/(app)/ads/[id]/edit/edit-form.tsx b/app/(app)/dashboard/ads/[id]/edit/edit-form.tsx
similarity index 100%
rename from app/(app)/ads/[id]/edit/edit-form.tsx
rename to app/(app)/dashboard/ads/[id]/edit/edit-form.tsx
diff --git a/app/(app)/ads/[id]/edit/page.tsx b/app/(app)/dashboard/ads/[id]/edit/page.tsx
similarity index 96%
rename from app/(app)/ads/[id]/edit/page.tsx
rename to app/(app)/dashboard/ads/[id]/edit/page.tsx
index f66679f2..3090cf4f 100644
--- a/app/(app)/ads/[id]/edit/page.tsx
+++ b/app/(app)/dashboard/ads/[id]/edit/page.tsx
@@ -64,7 +64,7 @@ export default async function EditCampaignPage({
return (
-
+
← Campaign
diff --git a/app/(app)/ads/[id]/page.tsx b/app/(app)/dashboard/ads/[id]/page.tsx
similarity index 97%
rename from app/(app)/ads/[id]/page.tsx
rename to app/(app)/dashboard/ads/[id]/page.tsx
index 52ba772f..964e61cf 100644
--- a/app/(app)/ads/[id]/page.tsx
+++ b/app/(app)/dashboard/ads/[id]/page.tsx
@@ -103,7 +103,7 @@ export default async function CampaignDetailPage({
return (
-
+
← Ad campaigns
@@ -129,7 +129,7 @@ export default async function CampaignDetailPage({
{display.label}
-
+
Edit
diff --git a/app/(app)/ads/earnings/page.tsx b/app/(app)/dashboard/ads/earnings/page.tsx
similarity index 97%
rename from app/(app)/ads/earnings/page.tsx
rename to app/(app)/dashboard/ads/earnings/page.tsx
index bdc6e5d6..6e4ff4d2 100644
--- a/app/(app)/ads/earnings/page.tsx
+++ b/app/(app)/dashboard/ads/earnings/page.tsx
@@ -47,7 +47,7 @@ export default async function EarningsPage() {
return (
No monetized sites yet.{" "}
-
+
Monetize a site
.
@@ -126,7 +126,7 @@ export default async function EarningsPage() {
{model.campaigns.length === 0 ? (
No ad campaigns yet.{" "}
-
+
Create an ad
.
diff --git a/app/(app)/ads/new/form.tsx b/app/(app)/dashboard/ads/new/form.tsx
similarity index 99%
rename from app/(app)/ads/new/form.tsx
rename to app/(app)/dashboard/ads/new/form.tsx
index 53af5d7b..2f4153f4 100644
--- a/app/(app)/ads/new/form.tsx
+++ b/app/(app)/dashboard/ads/new/form.tsx
@@ -88,7 +88,7 @@ export function NewAdForm() {
setError(res.error);
return;
}
- router.push(`/ads?created=${res.refSlug}`);
+ router.push(`/dashboard/ads?created=${res.refSlug}`);
});
}
diff --git a/app/(app)/ads/new/page.tsx b/app/(app)/dashboard/ads/new/page.tsx
similarity index 93%
rename from app/(app)/ads/new/page.tsx
rename to app/(app)/dashboard/ads/new/page.tsx
index 1170ee44..938a34d9 100644
--- a/app/(app)/ads/new/page.tsx
+++ b/app/(app)/dashboard/ads/new/page.tsx
@@ -29,7 +29,7 @@ export default async function NewAdPage() {
return (
-
+
← Ad campaigns
Create an ad
@@ -42,7 +42,7 @@ export default async function NewAdPage() {
🎁 Launch offer: your first deposit is matched 100% in bonus ad
credits (up to $100 free).{" "}
-
+
Add credits
.
diff --git a/app/(app)/ads/page.tsx b/app/(app)/dashboard/ads/page.tsx
similarity index 93%
rename from app/(app)/ads/page.tsx
rename to app/(app)/dashboard/ads/page.tsx
index 765092d2..3be82d35 100644
--- a/app/(app)/ads/page.tsx
+++ b/app/(app)/dashboard/ads/page.tsx
@@ -96,13 +96,13 @@ export default async function AdsPage({
Ad campaigns
-
+
Earnings & reports
-
+
Monetize a site
-
+
Create an ad
No campaigns yet.{" "}
-
+
Create your first ad
.
@@ -185,7 +185,7 @@ export default async function AdsPage({
-
+
{c.name}
@@ -194,13 +194,13 @@ export default async function AdsPage({
-
+
{display.label}
-
+
Edit
diff --git a/app/(app)/ads/slots/page.tsx b/app/(app)/dashboard/ads/slots/page.tsx
similarity index 93%
rename from app/(app)/ads/slots/page.tsx
rename to app/(app)/dashboard/ads/slots/page.tsx
index 62fe1523..14ee88b4 100644
--- a/app/(app)/ads/slots/page.tsx
+++ b/app/(app)/dashboard/ads/slots/page.tsx
@@ -92,19 +92,19 @@ export default async function SlotsPage() {
return (
-
+
← Ad campaigns
Monetize your site
-
+
Earnings & reports
{/* Always-visible way to add a site to monetize — a site is a project,
so this starts the project-creation flow. Previously the only link
to it was hidden inside the empty state. */}
-
+
Monetize a new site
No sites yet — a site is a CrawlProof project.{" "}
-
+
Add one
{" "}
to enable a slot.
diff --git a/app/(app)/analytics/page.tsx b/app/(app)/dashboard/analytics/page.tsx
similarity index 99%
rename from app/(app)/analytics/page.tsx
rename to app/(app)/dashboard/analytics/page.tsx
index 2882d33a..efd59c0d 100644
--- a/app/(app)/analytics/page.tsx
+++ b/app/(app)/dashboard/analytics/page.tsx
@@ -139,7 +139,7 @@ export default async function PortfolioAnalyticsPage({
No projects yet.{" "}
-
+
Add your first property
{" "}
to start seeing portfolio-wide analytics.
@@ -578,7 +578,7 @@ function ProjectTrendTable({ rows }: { rows: ProjectRow[] }) {
>
-
+
← Back to report
Dashboard
-
+
New project
@@ -191,7 +191,7 @@ export default async function DashboardPage({
{projects.map((p) => (
-
+
No projects yet.{" "}
-
+
Create one
.
@@ -298,7 +298,7 @@ export default async function DashboardPage({
{audits.map((a) => (
-
+
{a.target_url}
diff --git a/app/(app)/projects/[id]/autoblog/actions.tsx b/app/(app)/dashboard/projects/[id]/autoblog/actions.tsx
similarity index 100%
rename from app/(app)/projects/[id]/autoblog/actions.tsx
rename to app/(app)/dashboard/projects/[id]/autoblog/actions.tsx
diff --git a/app/(app)/projects/[id]/autoblog/articles/[articleId]/page.tsx b/app/(app)/dashboard/projects/[id]/autoblog/articles/[articleId]/page.tsx
similarity index 99%
rename from app/(app)/projects/[id]/autoblog/articles/[articleId]/page.tsx
rename to app/(app)/dashboard/projects/[id]/autoblog/articles/[articleId]/page.tsx
index b5c84c9e..db75b330 100644
--- a/app/(app)/projects/[id]/autoblog/articles/[articleId]/page.tsx
+++ b/app/(app)/dashboard/projects/[id]/autoblog/articles/[articleId]/page.tsx
@@ -54,7 +54,7 @@ export default async function AutoblogArticlePage({
← Article history
diff --git a/app/(app)/projects/[id]/autoblog/articles/[articleId]/publish-button.tsx b/app/(app)/dashboard/projects/[id]/autoblog/articles/[articleId]/publish-button.tsx
similarity index 100%
rename from app/(app)/projects/[id]/autoblog/articles/[articleId]/publish-button.tsx
rename to app/(app)/dashboard/projects/[id]/autoblog/articles/[articleId]/publish-button.tsx
diff --git a/app/(app)/projects/[id]/autoblog/auto-refresh.tsx b/app/(app)/dashboard/projects/[id]/autoblog/auto-refresh.tsx
similarity index 100%
rename from app/(app)/projects/[id]/autoblog/auto-refresh.tsx
rename to app/(app)/dashboard/projects/[id]/autoblog/auto-refresh.tsx
diff --git a/app/(app)/projects/[id]/autoblog/backlinks/chart.tsx b/app/(app)/dashboard/projects/[id]/autoblog/backlinks/chart.tsx
similarity index 100%
rename from app/(app)/projects/[id]/autoblog/backlinks/chart.tsx
rename to app/(app)/dashboard/projects/[id]/autoblog/backlinks/chart.tsx
diff --git a/app/(app)/projects/[id]/autoblog/backlinks/page.tsx b/app/(app)/dashboard/projects/[id]/autoblog/backlinks/page.tsx
similarity index 97%
rename from app/(app)/projects/[id]/autoblog/backlinks/page.tsx
rename to app/(app)/dashboard/projects/[id]/autoblog/backlinks/page.tsx
index cf709c91..445be8d4 100644
--- a/app/(app)/projects/[id]/autoblog/backlinks/page.tsx
+++ b/app/(app)/dashboard/projects/[id]/autoblog/backlinks/page.tsx
@@ -136,7 +136,7 @@ export default async function AutoblogBacklinksPage({
domain: string;
blog_root_url: string | null;
} | null;
- if (!site) redirect(`/projects/${projectId}/autoblog/setup`);
+ if (!site) redirect(`/dashboard/projects/${projectId}/autoblog/setup`);
const currentSitePublic = { blog_root_url: site.blog_root_url };
const svc = serviceClient();
@@ -197,7 +197,7 @@ export default async function AutoblogBacklinksPage({
@@ -93,7 +93,7 @@ export default async function AutoblogHistoryPage({
{a.title}
diff --git a/app/(app)/projects/[id]/autoblog/page.tsx b/app/(app)/dashboard/projects/[id]/autoblog/page.tsx
similarity index 96%
rename from app/(app)/projects/[id]/autoblog/page.tsx
rename to app/(app)/dashboard/projects/[id]/autoblog/page.tsx
index 69bd4621..fcbc490c 100644
--- a/app/(app)/projects/[id]/autoblog/page.tsx
+++ b/app/(app)/dashboard/projects/[id]/autoblog/page.tsx
@@ -76,7 +76,7 @@ export default async function AutoblogDashboardPage({
You haven't set up Autoblog yet for this project.
Get started
@@ -197,16 +197,16 @@ export default async function AutoblogDashboardPage({
@@ -156,7 +156,7 @@ export default async function AutoblogPlanPage({
{row.keyword}
{row.article_id && (
Open article
diff --git a/app/(app)/projects/[id]/autoblog/setup/form.tsx b/app/(app)/dashboard/projects/[id]/autoblog/setup/form.tsx
similarity index 99%
rename from app/(app)/projects/[id]/autoblog/setup/form.tsx
rename to app/(app)/dashboard/projects/[id]/autoblog/setup/form.tsx
index 945a785b..e21e7329 100644
--- a/app/(app)/projects/[id]/autoblog/setup/form.tsx
+++ b/app/(app)/dashboard/projects/[id]/autoblog/setup/form.tsx
@@ -593,7 +593,7 @@ export function SetupForm({
}
setNotice("Settings saved.");
if (!initial) {
- router.push(`/projects/${projectId}/autoblog`);
+ router.push(`/dashboard/projects/${projectId}/autoblog`);
} else {
router.refresh();
}
diff --git a/app/(app)/projects/[id]/autoblog/setup/page.tsx b/app/(app)/dashboard/projects/[id]/autoblog/setup/page.tsx
similarity index 93%
rename from app/(app)/projects/[id]/autoblog/setup/page.tsx
rename to app/(app)/dashboard/projects/[id]/autoblog/setup/page.tsx
index 627d5d57..fa990710 100644
--- a/app/(app)/projects/[id]/autoblog/setup/page.tsx
+++ b/app/(app)/dashboard/projects/[id]/autoblog/setup/page.tsx
@@ -71,13 +71,13 @@ export default async function AutoblogSetupPage({
{site ? "Autoblog settings" : "Set up Autoblog"}
-
+
Dashboard
-
+
History
-
+
Backlinks
diff --git a/app/(app)/projects/[id]/delete-project-button.tsx b/app/(app)/dashboard/projects/[id]/delete-project-button.tsx
similarity index 100%
rename from app/(app)/projects/[id]/delete-project-button.tsx
rename to app/(app)/dashboard/projects/[id]/delete-project-button.tsx
diff --git a/app/(app)/projects/[id]/edit-url-form.tsx b/app/(app)/dashboard/projects/[id]/edit-url-form.tsx
similarity index 100%
rename from app/(app)/projects/[id]/edit-url-form.tsx
rename to app/(app)/dashboard/projects/[id]/edit-url-form.tsx
diff --git a/app/(app)/projects/[id]/getting-started/page.tsx b/app/(app)/dashboard/projects/[id]/getting-started/page.tsx
similarity index 95%
rename from app/(app)/projects/[id]/getting-started/page.tsx
rename to app/(app)/dashboard/projects/[id]/getting-started/page.tsx
index e9a25d41..b2ff96df 100644
--- a/app/(app)/projects/[id]/getting-started/page.tsx
+++ b/app/(app)/dashboard/projects/[id]/getting-started/page.tsx
@@ -69,15 +69,15 @@ export default async function GettingStartedPage({
body: "Scan your site with one or more AI engines to produce your first audit. Each engine reports what it can find — content, schema, robots, AI-bot rules — and gives you concrete fixes.",
done: hasFirstScan,
cta: hasFirstScan
- ? { href: `/projects/${id}/scans`, label: "View scans" }
- : { href: `/projects/${id}`, label: "Run a scan" },
+ ? { href: `/dashboard/projects/${id}/scans`, label: "View scans" }
+ : { href: `/dashboard/projects/${id}`, label: "Run a scan" },
},
{
id: "stats-tracker",
title: "Enable the stats tracker",
body: "Add one