TaskFlow landing page audit
Fixes in priority order
- Page foundation is missing. There's no
<!doctype>,lang,<meta viewport>,<title>or meta description. Without the viewport tag the page renders as a zoomed-out desktop page on phones. There's also no<main>or<header>, and no skip link. - The CTAs aren't usable.
- Both buttons are bare
<button>s with no action, so they do nothing. - The ghost button has no padding.
- Neither has hover, focus or pressed styles.
- "Get Started!" and "Learn More" are vague.
- They should be links styled as buttons.
- Both buttons are bare
- The features row breaks on mobile and is crowded.
display:flexwithwidth:33%never wraps, so cards get crushed on phones.- There's no gap, no padding and no max-width container.
- The black shadow (
rgba(0,0,0,.3)) is invisible on a#000background, so the cards have no visible edges.
- Content problems.
- "99.99% uptime" sits under "Insights", which is a mismatch.
- It's also an unsourced claim. If it's true, show it as a sourced stat. If not, drop it.
- "Launch quickly" and "Your data is safe" say nothing specific.
- The testimonial ("Great tool!" - John Doe) reads as a placeholder and hurts trust. Use a real quote with a name, role and company.
- Accessibility details.
- The images have no
alt. Here they're decorative next to headings, so usealt="". - Headings jump from h1 to h3, so the features need an h2.
100vhjumps on iOS Safari. Usemin-height:100dvh.- Add
prefers-reduced-motionhandling.
- The images have no
- Visual polish.
- Pure
#000is harsh, so use an off-black. - The 45° purple-to-blue gradient is a very common template look. Use one muted accent with a soft radial glow instead.
- Use a centered headline only when it earns it. Left-aligned reads more editorial.
- The three equal cards are the most generic feature layout, so I made the grid asymmetric.
- The headline needs tighter tracking and
text-wrap: balance. - Rocket and shield are cliché icons. I kept your files since I can't see the assets, but consider swapping them.
- Pure
- Copy clichés. "Elevate", "Seamlessly", "Unleash" and "next-gen" are filler. The replacement copy below is a draft. Check it against what TaskFlow actually does.
- Inline styles. Move them to a stylesheet, as below.
Corrected hero and features
Brand name and links are unchanged. I assumed the CTAs point to /login and #features. Change "Get Started" to your signup URL if you have one.
<style>
:root {
--bg: #0c0c10;
--surface: #14141a;
--border: rgba(255, 255, 255, .08);
--text: #f4f4f6;
--muted: #a0a0ad;
--accent: #7c6cf0; /* single accent, saturation kept low */
--accent-hover: #9183f5;
--on-accent: #0c0c10;
--max: 1200px;
}
.hero {
min-height: 100dvh;
display: grid;
align-items: center;
padding: 6rem 1.5rem;
background:
radial-gradient(60rem 30rem at 15% 0%, rgba(124, 108, 240, .22), transparent 70%),
var(--bg);
}
.hero__inner { width: min(100%, var(--max)); margin-inline: auto; }
.hero h1 {
max-width: 14ch;
margin: 0 0 1.5rem;
font-size: clamp(2.5rem, 7vw, 4.5rem);
font-weight: 600;
line-height: 1.02;
letter-spacing: -.035em;
text-wrap: balance;
}
.hero p {
max-width: 52ch;
margin: 0 0 2.5rem;
font-size: 1.125rem;
line-height: 1.6;
color: var(--muted);
text-wrap: pretty;
}
.hero__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 1.5rem; }
.btn {
display: inline-block;
padding: .875rem 1.5rem;
border-radius: .625rem;
background: var(--accent);
color: var(--on-accent);
font-weight: 600;
text-decoration: none;
transition: background .2s, transform .2s;
}
.btn:hover { background: var(--accent-hover); transform: translateY(-1px); }
.btn:active { transform: scale(.98); }
.link-quiet { color: var(--text); text-underline-offset: .3em; }
.btn:focus-visible, .link-quiet:focus-visible {
outline: 2px solid var(--text);
outline-offset: 3px;
}
.features { padding: 6rem 1.5rem 7rem; background: var(--bg); }
.features__inner { width: min(100%, var(--max)); margin-inline: auto; }
.features h2 {
max-width: 20ch;
margin: 0 0 3rem;
font-size: clamp(1.75rem, 4vw, 2.75rem);
font-weight: 600;
letter-spacing: -.03em;
line-height: 1.1;
text-wrap: balance;
}
.features__grid {
display: grid;
grid-template-columns: repeat(12, 1fr);
gap: 1rem;
}
.card {
grid-column: span 12;
padding: 2rem;
border: 1px solid var(--border);
border-radius: 1rem;
background: var(--surface);
}
.card img { width: 2rem; height: 2rem; margin-bottom: 1.5rem; }
.card h3 { margin: 0 0 .5rem; font-size: 1.25rem; font-weight: 600; letter-spacing: -.01em; }
.card p { margin: 0; max-width: 46ch; line-height: 1.6; color: var(--muted); }
@media (min-width: 52rem) {
.card--wide { grid-column: span 7; }
.card--narrow { grid-column: span 5; }
}
@media (prefers-reduced-motion: reduce) {
.btn { transition: none; }
.btn:hover, .btn:active { transform: none; }
}
</style>
<section class="hero">
<div class="hero__inner">
<h1>Plan the work. Ship it on time.</h1>
<p>TaskFlow keeps tasks, owners and deadlines in one place, so your team always knows what's next.</p>
<div class="hero__actions">
<a class="btn" href="/login">Get started</a>
<a class="link-quiet" href="#features">See how it works</a>
</div>
</div>
</section>
<section class="features" id="features" aria-labelledby="features-title">
<div class="features__inner">
<h2 id="features-title">Everything your team needs to keep projects moving</h2>
<div class="features__grid">
<article class="card card--wide">
<img src="/i/rocket.svg" alt="" width="32" height="32">
<h3>Add tasks in seconds</h3>
<p>Capture a task, assign an owner and set a due date from a single quick-entry box.</p>
</article>
<article class="card card--narrow">
<img src="/i/shield.svg" alt="" width="32" height="32">
<h3>Control who sees what</h3>
<p>Set access per project and per person.</p>
</article>
<article class="card">
<img src="/i/chart.svg" alt="" width="32" height="32">
<h3>See where projects stand</h3>
<p>Track progress across projects and spot slipping deadlines before they become problems.</p>
</article>
</div>
</div>
</section>
Things to do outside these two sections
- Add
<!doctype html>,<html lang="en">, the viewport meta, a<title>and a meta description. - Set
bodytobackground: var(--bg)andmargin: 0. - Wrap the page content in
<main>. - Wrap the nav in
<header>and add focus styles to its links. - Load your font with a
<link>. I'd try Geist or Outfit in place of Inter, but that's your call as a brand decision. - Replace the testimonial with a real quote, styled as a
<figure>with a<blockquote>and<figcaption>. - Add a footer with privacy and terms links.
- The feature copy is a draft. Rewrite any line that doesn't match what the product does. If you want to keep the uptime claim, show it as its own sourced stat.
Test run: a pasted generic landing page (pure black, purple gradient, three equal cards, filler copy). The model invented draft feature copy and said so; it also assumed where the CTAs link. Check both before using. Nothing was applied to a real project.
它做什麼
針對已經存在的專案。智能體先掃描程式庫,弄清框架與樣式方式,再做一輪設計稽核,並用你現有的技術棧修正發現的問題:不遷移、不砍掉重練。稽核涵蓋字體(預設字體、標題沒氣勢、行寬)、色彩與表面(純黑、過飽和強調色、AI 常見的紫色漸層、通用陰影)、版面(三張等寬卡片、100vh、沒有最大寬度、按鈕未對齊)、互動狀態(懸停、焦點、載入、空狀態、錯誤狀態)、內容(佔位姓名、過於整齊的假數字、空話文案)、元件、圖示、程式碼品質,以及容易遺漏的法律連結與 404 頁面等。修正依固定順序進行,從換字體到最後的精修,並讓改動保持小而便於審查。
輸出
一份依優先順序排列的問題清單,以及你指定部分的修正後程式碼。
適合什麼場景
網站可用但看起來很「通用」,想穩妥地逐步升級、而不是從零重做的團隊。
中風險:純指令檔,沒有腳本,但它會直接修改你專案的原始檔(標記與 CSS),並可能在檢查 package.json 後新增依賴。請使用版本控管並審查變更。已用一段貼上的頁面試用一次:模型編了功能介紹的草稿文案(已標明是草稿),也假設了按鈕的連結去向,請都核對一下。沒有對真實專案做任何改動。作者 Leonxlnx,MIT 授權。