From 2e36171979a5985361f6b1d4c643bd20be1e5e00 Mon Sep 17 00:00:00 2001
From: Pavel <39xanax@gmail.com>
Date: Mon, 17 Aug 2026 05:20:23 +0500
Subject: [PATCH] refactor: remove landing page
---
README.md | 8 --
dash/frontend/src/App.jsx | 5 +-
dash/frontend/src/index.css | 113 --------------------
dash/frontend/src/pages/Landing.jsx | 156 ----------------------------
docs/screenshots/landing.png | Bin 144470 -> 0 bytes
5 files changed, 2 insertions(+), 280 deletions(-)
delete mode 100644 dash/frontend/src/pages/Landing.jsx
delete mode 100644 docs/screenshots/landing.png
diff --git a/README.md b/README.md
index 4795a2c..4bd3dff 100644
--- a/README.md
+++ b/README.md
@@ -85,14 +85,6 @@ sequenceDiagram
DB-->>UI: Live status and event stream
```
-## Screenshots
-
-### Product landing page
-
-
-
-The authenticated dashboard carries the same model into the workspace: organization tree, agents, tasks, schedules, memory, governance, threads, approvals, and settings are exposed as operating surfaces rather than separate demos.
-
## Repository layout
```text
diff --git a/dash/frontend/src/App.jsx b/dash/frontend/src/App.jsx
index 774b72a..526335c 100644
--- a/dash/frontend/src/App.jsx
+++ b/dash/frontend/src/App.jsx
@@ -1,7 +1,6 @@
import { BrowserRouter, Routes, Route, Navigate } from 'react-router-dom'
import { AuthProvider } from './lib/auth'
import { useAuth } from './lib/useAuth'
-import Landing from './pages/Landing'
import Auth from './pages/Auth'
import Account from './pages/Account'
import Dashboard from './pages/Dashboard'
@@ -16,7 +15,7 @@ function ProtectedRoute({ children }) {
function AppRoutes() {
return (
- } />
+ } />
} />
@@ -25,7 +24,7 @@ function AppRoutes() {
} />
} />
- } />
+ } />
)
}
diff --git a/dash/frontend/src/index.css b/dash/frontend/src/index.css
index 3f63792..6b3a385 100644
--- a/dash/frontend/src/index.css
+++ b/dash/frontend/src/index.css
@@ -1665,88 +1665,6 @@ button:active {
}
}
-/* ================================
- LANDING PAGE — WARM THEME
- ================================ */
-.landing-root { min-height: 100dvh; background: #ede9e0; color: #1c1c1e; font-family: var(--font-family); }
-.landing-nav { display: flex; align-items: center; justify-content: space-between; padding: 20px 40px; border-bottom: 1px solid rgba(0,0,0,0.07); background: #ede9e0; }
-.landing-nav-logo { font-size: 1.3rem; font-weight: 900; color: #1c1c1e; letter-spacing: -0.5px; }
-.landing-nav-cta { background: #1c1c1e; color: #f5c53f; border: none; padding: 10px 22px; border-radius: 10px; font-size: 0.9rem; font-weight: 700; cursor: pointer; transition: background 0.2s; }
-.landing-nav-cta:hover { background: #333; transform: none; filter: none; }
-
-.landing-hero { display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: 100px 24px 80px; min-height: calc(100dvh - 73px); background: #ede9e0; position: relative; overflow: hidden; }
-.landing-hero > *:not(.landing-orb) { position: relative; z-index: 1; }
-.landing-hero h1 { font-size: clamp(2.4rem, 5vw, 4.2rem); font-weight: 800; line-height: 1.08; letter-spacing: -1.5px; color: #1c1c1e; margin-bottom: 24px; max-width: 680px; }
-.landing-cta-row { display: flex; gap: 14px; flex-wrap: wrap; justify-content: center; }
-.landing-btn-primary { background: #1c1c1e; color: #f5c53f; border: none; padding: 14px 30px; border-radius: 12px; font-size: 1rem; font-weight: 700; cursor: pointer; transition: background 0.2s, transform 0.15s; display: inline-flex; align-items: center; gap: 8px; }
-.landing-btn-primary:hover { background: #333; transform: translateY(-1px); filter: none; }
-.landing-cta-sub { font-size: 0.8rem; color: #9a9a9a; margin-top: 14px; }
-
-.landing-hero-compare { display: inline-flex; align-items: flex-start; gap: 0; background: #ffffff; border: 1px solid rgba(0,0,0,0.08); border-radius: 16px; margin-bottom: 40px; max-width: 520px; text-align: left; overflow: hidden; box-shadow: 0 2px 20px rgba(0,0,0,0.06); }
-.landing-hero-compare-bad { flex: 1; padding: 18px 20px; }
-.landing-hero-compare-bad span { font-size: 0.68rem; text-transform: uppercase; letter-spacing: 0.08em; color: #ef4444; font-weight: 700; }
-.landing-hero-compare-bad p { font-size: 0.9rem; color: #6b6b6b; margin-top: 5px; line-height: 1.5; }
-.landing-hero-compare-bad s { color: #ef4444; }
-.landing-hero-compare-divider { width: 1px; background: rgba(0,0,0,0.07); align-self: stretch; flex-shrink: 0; }
-.landing-hero-compare-good { flex: 1; padding: 18px 20px; background: #fffbec; }
-.landing-hero-compare-good span { font-size: 0.68rem; text-transform: uppercase; letter-spacing: 0.08em; color: #c18e0a; font-weight: 700; }
-.landing-hero-compare-good p { font-size: 0.9rem; color: #1c1c1e; margin-top: 5px; line-height: 1.5; }
-.landing-hero-compare-good strong { color: #1c1c1e; }
-
-.landing-features { padding: 80px 24px; background: #f4f1eb; }
-.landing-features h2 { text-align: center; font-size: clamp(1.5rem, 3.5vw, 2rem); font-weight: 800; color: #1c1c1e; margin-bottom: 48px; letter-spacing: -0.5px; }
-.landing-features-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; max-width: 1000px; margin: 0 auto; }
-.landing-feature-card { background: #ffffff; border: none; border-radius: 16px; padding: 24px; box-shadow: 0 1px 12px rgba(0,0,0,0.05); transition: transform 0.2s, box-shadow 0.2s; }
-.landing-feature-card:hover { transform: translateY(-2px); box-shadow: 0 4px 20px rgba(0,0,0,0.08); }
-.landing-feature-icon { width: 40px; height: 40px; background: #fffbec; border-radius: 10px; display: flex; align-items: center; justify-content: center; margin-bottom: 14px; color: #c18e0a; }
-.landing-feature-card h3 { font-size: 0.95rem; font-weight: 700; color: #1c1c1e; margin-bottom: 8px; }
-.landing-feature-card p { font-size: 0.84rem; color: #6b6b6b; line-height: 1.6; }
-
-.landing-pricing { padding: 80px 24px; background: #ede9e0; }
-.landing-pricing-inner { max-width: 480px; margin: 0 auto; text-align: center; }
-.landing-pricing h2 { font-size: 2rem; font-weight: 800; color: #1c1c1e; margin-bottom: 10px; letter-spacing: -0.5px; }
-.landing-pricing-sub { color: #6b6b6b; font-size: 1rem; margin-bottom: 40px; line-height: 1.6; }
-.landing-price-card { background: #ffffff; border: none; border-radius: 20px; padding: 36px 32px; position: relative; box-shadow: 0 4px 32px rgba(0,0,0,0.08); }
-.landing-price-card::before { content: '3-DAY FREE TRIAL'; position: absolute; top: -13px; left: 50%; transform: translateX(-50%); background: #f5c53f; color: #1c1c1e; font-size: 0.68rem; font-weight: 800; letter-spacing: 0.1em; padding: 5px 16px; border-radius: 999px; white-space: nowrap; }
-.landing-price-tag { display: flex; align-items: baseline; justify-content: center; gap: 6px; margin-bottom: 8px; }
-.landing-price-tag strong { font-size: 3.5rem; font-weight: 800; color: #1c1c1e; letter-spacing: -2px; }
-.landing-price-tag span { font-size: 1.1rem; color: #6b6b6b; font-weight: 500; }
-.landing-price-period { color: #9a9a9a; font-size: 0.85rem; margin-bottom: 28px; }
-.landing-price-features { list-style: none; text-align: left; display: flex; flex-direction: column; gap: 12px; margin-bottom: 32px; }
-.landing-price-features li { display: flex; align-items: center; gap: 10px; font-size: 0.9rem; color: #2c2c2c; }
-.landing-price-features li svg { color: #22c55e; flex-shrink: 0; }
-.landing-price-note { font-size: 0.78rem; color: #9a9a9a; margin-bottom: 28px; line-height: 1.6; }
-.landing-price-cta { background: #1c1c1e; color: #f5c53f; border: none; width: 100%; padding: 15px; border-radius: 12px; font-size: 1rem; font-weight: 700; cursor: pointer; transition: background 0.2s, transform 0.15s; }
-.landing-price-cta:hover { background: #333; transform: translateY(-1px); filter: none; }
-.landing-price-cancel { font-size: 0.78rem; color: #9a9a9a; margin-top: 14px; }
-
-.landing-footer { text-align: center; padding: 32px 24px; color: #9a9a9a; font-size: 0.82rem; border-top: 1px solid rgba(0,0,0,0.07); background: #ede9e0; }
-
-/* Hero badge + sub */
-.landing-hero-badge { display: inline-block; background: #f5c53f; color: #1c1c1e; font-size: 0.72rem; font-weight: 800; letter-spacing: 0.06em; text-transform: uppercase; padding: 5px 14px; border-radius: 999px; margin-bottom: 28px; }
-.landing-hero-sub { font-size: 1.1rem; color: #4a4a4a; line-height: 1.7; max-width: 540px; margin: 0 auto 40px; }
-
-/* Manifesto */
-.landing-manifesto { padding: 80px 24px; background: #1c1c1e; }
-.landing-manifesto-header { text-align: center; margin-bottom: 56px; }
-.landing-manifesto-eyebrow { font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.1em; font-weight: 700; color: #f5c53f; }
-.landing-manifesto-header h2 { font-size: clamp(1.8rem, 3vw, 2.6rem); font-weight: 800; color: #f0f0f0; letter-spacing: -0.5px; margin-top: 8px; }
-.landing-manifesto-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 2px; max-width: 960px; margin: 0 auto; }
-.landing-manifesto-item { background: #242424; padding: 28px 24px; display: flex; gap: 18px; align-items: flex-start; border-radius: 4px; transition: background 0.2s; }
-.landing-manifesto-item:hover { background: #2c2c2c; }
-.landing-manifesto-num { font-size: 0.7rem; font-weight: 800; color: #f5c53f; letter-spacing: 0.08em; padding-top: 3px; flex-shrink: 0; }
-.landing-manifesto-item h3 { font-size: 0.95rem; font-weight: 700; color: #f0f0f0; margin-bottom: 6px; }
-.landing-manifesto-item p { font-size: 0.84rem; color: #9a9a9a; line-height: 1.65; }
-
-/* Final CTA */
-.landing-final-cta { padding: 100px 24px; background: #ede9e0; }
-.landing-final-cta-inner { max-width: 480px; margin: 0 auto; display: flex; flex-direction: column; align-items: center; text-align: center; }
-.landing-final-cta h2 { font-size: clamp(2rem, 4vw, 3rem); font-weight: 800; color: #1c1c1e; letter-spacing: -1px; margin-bottom: 12px; }
-.landing-final-cta-inner > p { font-size: 1rem; color: #6b6b6b; margin-bottom: 36px; }
-.landing-final-included { list-style: none; display: inline-flex; flex-direction: column; gap: 10px; margin-bottom: 40px; text-align: left; }
-.landing-final-included li { display: flex; align-items: center; gap: 9px; font-size: 0.88rem; color: #3a3a3a; }
-.landing-final-included li svg { color: #c18e0a; flex-shrink: 0; }
-
/* Trial banner */
.ahq-trial-banner { display: flex; align-items: center; justify-content: center; gap: 12px; padding: 10px 24px; font-size: 0.82rem; font-weight: 600; flex-wrap: wrap; text-align: center; }
.ahq-trial-banner button { background: none; border: none; cursor: pointer; font-weight: 700; font-size: 0.82rem; text-decoration: underline; padding: 0; }
@@ -1755,31 +1673,6 @@ button:active {
.ahq-trial-expired { background: #fef2f2; color: #dc2626; border-bottom: 1px solid #fca5a533; }
.ahq-trial-expired button { color: #dc2626; }
-@media (max-width: 900px) {
- .landing-features-grid { grid-template-columns: repeat(2, 1fr); }
- .landing-manifesto { padding: 60px 20px; }
- .landing-features { padding: 60px 20px; }
- .landing-final-cta { padding: 72px 20px; }
-}
-
-@media (max-width: 600px) {
- .landing-nav { padding: 14px 18px; }
- .landing-hero { padding: 52px 18px 48px; min-height: auto; }
- .landing-hero h1 { letter-spacing: -0.5px; }
- .landing-hero-sub { font-size: 1rem; }
- .landing-hero-compare { flex-direction: column; gap: 0; }
- .landing-hero-compare-divider { width: 100%; height: 1px; }
- .landing-btn-primary { width: 100%; justify-content: center; }
- .landing-price-card { padding: 28px 20px; }
- .landing-features { padding: 48px 18px; }
- .landing-features h2 { margin-bottom: 32px; }
- .landing-features-grid { grid-template-columns: 1fr; }
- .landing-manifesto { padding: 48px 18px; }
- .landing-manifesto-grid { grid-template-columns: 1fr; }
- .landing-final-cta { padding: 56px 18px; }
- .landing-final-cta h2 { letter-spacing: -0.5px; }
-}
-
@media (max-width: 480px) {
.account-root { padding: 20px 16px; }
.account-card { padding: 18px 16px; }
@@ -1897,12 +1790,6 @@ button:active {
.ahq-auth-terms { margin-top: 20px; text-align: center; font-size: 0.76rem; color: #9a9a9a; }
.ahq-auth-terms a { color: #6b6b6b; text-decoration: underline; }
-/* Landing orbs */
-.landing-orb { position: absolute; border-radius: 50%; pointer-events: none; }
-.landing-orb-1 { width: 600px; height: 600px; background: radial-gradient(circle, rgba(245,197,63,0.18) 0%, transparent 65%); top: -200px; left: -150px; }
-.landing-orb-2 { width: 400px; height: 400px; background: radial-gradient(circle, rgba(245,197,63,0.12) 0%, transparent 65%); top: 20%; right: -100px; }
-.landing-orb-3 { width: 300px; height: 300px; background: radial-gradient(circle, rgba(193,142,10,0.1) 0%, transparent 65%); bottom: 10%; left: 10%; }
-
/* Onboarding modal */
.ahq-onboarding-overlay { position: fixed; inset: 0; background: rgba(0,0,0,0.35); backdrop-filter: blur(4px); z-index: 9999; display: flex; align-items: center; justify-content: center; padding: 20px; animation: fadeIn 0.2s ease; }
@keyframes fadeIn { from { opacity: 0 } to { opacity: 1 } }
diff --git a/dash/frontend/src/pages/Landing.jsx b/dash/frontend/src/pages/Landing.jsx
deleted file mode 100644
index 047039a..0000000
--- a/dash/frontend/src/pages/Landing.jsx
+++ /dev/null
@@ -1,156 +0,0 @@
-import { useNavigate } from 'react-router-dom'
-import { Building2, Layers, Plug, Shield, Calendar, Brain, ArrowRight, Check } from 'lucide-react'
-
-const features = [
- {
- icon: Building2,
- title: 'Real org structure',
- desc: 'Companies, departments, managers, workers. Your AI workforce mirrors how real businesses operate.',
- },
- {
- icon: Layers,
- title: '350+ models via OpenRouter',
- desc: 'Claude, GPT-4, Mistral, Llama — any model, any time. You pick, you control costs entirely.',
- },
- {
- icon: Plug,
- title: 'MCP integration',
- desc: 'Connect any tool via Model Context Protocol. Databases, APIs, browsers, file systems — all wired in.',
- },
- {
- icon: Shield,
- title: 'Governance policies',
- desc: 'Define exactly what agents can and can\'t do. Approval gates, policy rules, tamper-proof audit logs.',
- },
- {
- icon: Calendar,
- title: 'Calendar triggers',
- desc: 'Schedule autonomous operations. Agents run at 9am, process data overnight, report every Friday.',
- },
- {
- icon: Brain,
- title: 'Persistent memory',
- desc: 'Every action, every decision, every output — logged with timestamps. Your agent company has a brain.',
- },
-]
-
-const manifestoItems = [
- {
- label: 'Agents that own outcomes',
- body: 'Not chatbots. Not copilots. Workers with roles, responsibilities, and memory — running autonomously while you sleep.',
- },
- {
- label: 'You bring the models',
- body: 'Use your own OpenRouter key. Pick any model for any role. We never mark up your AI costs.',
- },
- {
- label: 'Infrastructure, not a marketplace',
- body: 'AgentHQ is a platform. Not an app store. You build, you own, you control every agent that works under your roof.',
- },
- {
- label: 'Governance built in',
- body: 'Every action is logged. Every policy is enforced. Every output is auditable. AI that operates with accountability.',
- },
-]
-
-const included = [
- 'Unlimited agents, companies, departments',
- '350+ models via OpenRouter (your key)',
- 'MCP tool integrations',
- 'Governance policies & audit logs',
- 'Calendar-triggered operations',
- 'Persistent memory system',
-]
-
-export default function Landing() {
- const navigate = useNavigate()
-
- return (
-
-
-
- {/* Hero */}
-
-
-
-
- Free to start · No credit card
- Build a company
that runs itself.
-
- Hire AI agents. Assign them departments. Give them memory, tools, and authority.
- Watch them work — around the clock, without you.
-
-
-
-
- 3-day free trial · No credit card required
-
-
- {/* Manifesto */}
-
-
- How it works
-
A new kind of workforce.
-
-
- {manifestoItems.map((item, i) => (
-
-
0{i + 1}
-
-
{item.label}
-
{item.body}
-
-
- ))}
-
-
-
- {/* Features */}
-
- Everything a company needs.
Run by agents.
-
- {features.map(({ icon: Icon, title, desc }) => (
-
-
-
-
-
{title}
-
{desc}
-
- ))}
-
-
-
- {/* Final CTA */}
-
-
-
Start a company tonight.
-
One account. Unlimited agents. Your org, running on autopilot.
-
- {included.map((item) => (
- -
-
- {item}
-
- ))}
-
-
-
- 3-day free trial · No contracts · Cancel anytime
-
-
-
-
-
-
- )
-}
diff --git a/docs/screenshots/landing.png b/docs/screenshots/landing.png
deleted file mode 100644
index 793b1eff154cb709dabad2f9ff808db0d65e7d26..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 144470
zcmdpe^+S{G`!=D3NJ~f~2+~N`KuKw(JEU_UodXr=?w0QE9H4Y}GaAVO14i@iBR=0h
z;=O<2X572Zoqe3gb&cSUN;25b$etk~Az{mYkW@iJdWyJ38N)z9{CGz#hm3@Tha@Zc
zUd=u2ARXP0fp@+)wyn*V!Y!^P2hQO7N$AZhMf?N(D$R}`0~QihM!+C_wHM^Xam-)k
zWZvzKdj)QIR$Q4w6g*-?n7Co>Ep9CjnKpdFR?1w-bPpa3+;=t9U}c1;$Lm+RC_>=l
z6^2CP_unsJ82>-rU;od<|GWI&Zw`SoZ!$wUT0FMPBE>}IpBv^YLoSP2j;bGgy{H{8
zvpyfb8}YsUKdbzNn@+%Q#4dM_XWH14349;CAXR*QMi@qa*F!=geXex9=jMBJBNiMz
zux|hhQT9I2dYik7Z~5