···14141515export const metadata: Metadata = {
1616 title: "Lively Forms",
1717- description: "Lively Forms is a conversational form builder with an elegant creator workflow.",
1717+ description: "Lively Forms is a conversational form builder for creating, publishing, and reviewing forms.",
1818};
19192020export default function RootLayout({
-40
app/login/page.tsx
···11-import { redirect } from "next/navigation";
22-33-import { GoogleSignInButton } from "@/components/auth/google-sign-in-button";
44-import { Card } from "@/components/ui/card";
55-import { getServerAuthSession } from "@/lib/auth";
66-77-export default async function LoginPage() {
88- const session = await getServerAuthSession();
99-1010- if (session?.user?.id) {
1111- redirect("/dashboard");
1212- }
1313-1414- return (
1515- <main className="mx-auto flex min-h-screen max-w-4xl items-center px-6 py-16">
1616- <Card className="grid w-full overflow-hidden lg:grid-cols-[1.1fr_0.9fr]">
1717- <div className="bg-[#191611] p-10 text-white lg:p-14">
1818- <p className="text-xs font-semibold uppercase tracking-[0.3em] text-[#b9dfb9]">Lively Forms creator access</p>
1919- <h1 className="mt-8 font-display text-5xl leading-tight">Sign in to craft the form experience.</h1>
2020- <p className="mt-6 max-w-md text-sm leading-7 text-white/70">
2121- Creator auth is used only for owning, editing, publishing, and reviewing forms. Public respondents never
2222- log in and their submissions stay anonymous.
2323- </p>
2424- </div>
2525- <div className="flex items-center justify-center bg-[linear-gradient(180deg,rgba(255,255,255,0.92),rgba(237,247,237,0.96))] p-10 lg:p-14">
2626- <div className="w-full max-w-sm space-y-6">
2727- <div>
2828- <p className="text-xs font-semibold uppercase tracking-[0.28em] text-[var(--accent)]">Lively Forms login</p>
2929- <h2 className="mt-3 font-display text-4xl text-[var(--ink)]">Use Google to continue.</h2>
3030- </div>
3131- <p className="text-sm leading-7 text-[var(--muted)]">
3232- Keep auth simple in v0 and stay focused on the form builder and conversational runner.
3333- </p>
3434- <GoogleSignInButton />
3535- </div>
3636- </div>
3737- </Card>
3838- </main>
3939- );
4040-}
+27-76
app/page.tsx
···11import Link from "next/link";
22-import { ArrowRight, Sparkles } from "lucide-react";
22+import { ArrowRight } from "lucide-react";
3344+import { GoogleSignInButton } from "@/components/auth/google-sign-in-button";
45import { Button } from "@/components/ui/button";
56import { Card } from "@/components/ui/card";
67import { getServerAuthSession } from "@/lib/auth";
···910 const session = await getServerAuthSession();
10111112 return (
1212- <main className="mx-auto flex min-h-screen w-full max-w-6xl flex-col px-6 py-10 lg:px-10">
1313- <header className="flex items-center justify-between rounded-full border border-black/8 bg-white/60 px-5 py-3 backdrop-blur-sm">
1414- <div>
1515- <p className="text-xs font-semibold uppercase tracking-[0.32em] text-[var(--accent)]">Lively Forms</p>
1616- <p className="text-xs text-[var(--muted)]">Conversational forms with a softer, brighter rhythm.</p>
1717- </div>
1818- <Link href={session?.user ? "/dashboard" : "/login"}>
1919- <Button variant="secondary" size="sm">
2020- {session?.user ? "Open dashboard" : "Creator login"}
2121- </Button>
2222- </Link>
2323- </header>
2424-2525- <section className="grid flex-1 items-center gap-8 py-12 lg:grid-cols-[1.25fr_0.9fr] lg:py-20">
2626- <div className="space-y-8">
2727- <div className="inline-flex items-center gap-2 rounded-full border border-black/8 bg-white/70 px-4 py-2 text-xs font-semibold uppercase tracking-[0.24em] text-[var(--accent)] backdrop-blur-sm">
2828- <Sparkles className="size-3.5" />
2929- Lively Forms v0
3030- </div>
3131- <div className="space-y-5">
3232- <h1 className="max-w-4xl font-display text-6xl leading-none text-[var(--ink)] md:text-7xl">
3333- Build forms that feel like a calm conversation.
1313+ <main className="mx-auto flex min-h-screen w-full max-w-4xl flex-col px-6 py-8 lg:px-10 lg:py-10">
1414+ <section className="flex flex-1 items-center py-16 lg:py-24">
1515+ <Card className="w-full p-8 lg:p-10">
1616+ <div className="max-w-2xl">
1717+ <p className="text-xs font-semibold uppercase tracking-[0.28em] text-[var(--accent)]">Lively Forms</p>
1818+ <h1 className="mt-4 font-display text-5xl leading-tight text-[var(--ink)] sm:text-6xl">
1919+ Create, publish, and review forms.
3420 </h1>
3535- <p className="max-w-2xl text-lg leading-8 text-[var(--muted)]">
3636- Create linear, elegant flows with focused screens, anonymous public submissions, and a polished
3737- creator workflow made for shipping quickly.
2121+ <p className="mt-5 text-base leading-7 text-[var(--muted)] sm:text-lg">
2222+ Lively Forms is a focused tool for building conversational forms, sharing them publicly, and reviewing
2323+ anonymous responses.
3824 </p>
3939- </div>
4040- <div className="flex flex-col gap-3 sm:flex-row">
4141- <Link href={session?.user ? "/dashboard" : "/login"}>
4242- <Button size="lg">
4343- {session?.user ? "Go to dashboard" : "Start with Google"}
4444- <ArrowRight className="size-4" />
4545- </Button>
4646- </Link>
4747- <a href="#surfaces">
4848- <Button variant="secondary" size="lg">
4949- See product surfaces
5050- </Button>
5151- </a>
5252- </div>
5353- </div>
2525+2626+ <div className="mt-8 flex flex-col gap-3 sm:flex-row">
2727+ {session?.user ? (
2828+ <Link href="/dashboard">
2929+ <Button size="lg">
3030+ Open dashboard
3131+ <ArrowRight className="size-4" />
3232+ </Button>
3333+ </Link>
3434+ ) : (
3535+ <GoogleSignInButton />
3636+ )}
3737+ </div>
54385555- <Card className="overflow-hidden bg-[linear-gradient(180deg,rgba(255,255,255,0.97),rgba(235,247,235,0.94))] p-6">
5656- <div className="rounded-[24px] border border-black/8 bg-[#171411] p-6 text-white shadow-[0_24px_70px_rgba(23,20,17,0.26)]">
5757- <p className="text-xs font-semibold uppercase tracking-[0.24em] text-[#b9dfb9]">Respondent experience</p>
5858- <div className="mt-8 space-y-6">
5959- <div className="h-1.5 rounded-full bg-white/10">
6060- <div className="h-full w-1/2 rounded-full bg-[#9fd7a4]" />
6161- </div>
6262- <div className="space-y-4">
6363- <p className="text-sm uppercase tracking-[0.3em] text-white/45">Step 2 of 4</p>
6464- <h2 className="font-display text-4xl leading-tight">What should we call you?</h2>
6565- <p className="max-w-sm text-sm leading-7 text-white/70">
6666- Every step gets the full stage — large type, clean focus, and motion that keeps the flow moving.
6767- </p>
6868- </div>
6969- <div className="rounded-[24px] border border-white/10 bg-white/5 p-4 text-white/55">Type your answer here…</div>
7070- <div className="flex items-center justify-between">
7171- <Button variant="secondary" className="border border-white/12 bg-white/8 text-white hover:bg-white/14">
7272- Back
7373- </Button>
7474- <Button className="bg-[#9fd7a4] text-[#122012] hover:bg-[#b8e4bb]">Continue</Button>
7575- </div>
3939+ <div className="mt-10 border-t border-black/8 pt-6 text-sm text-[var(--muted)]">
4040+ <p>Core workflow: create a form, publish it, and review responses.</p>
7641 </div>
7742 </div>
7843 </Card>
7979- </section>
8080-8181- <section id="surfaces" className="grid gap-6 pb-8 md:grid-cols-3">
8282- {[
8383- ["Creator dashboard", "Start new forms, manage drafts, and jump straight into editing without extra ceremony."],
8484- ["Block builder", "A master-detail editor keeps structure simple while the public runner gets the design spotlight."],
8585- ["Response review", "Read each submission in form order and keep the conversational context intact."],
8686- ].map(([title, description]) => (
8787- <Card key={title} className="p-6">
8888- <p className="text-xs font-semibold uppercase tracking-[0.26em] text-[var(--accent)]">Surface</p>
8989- <h3 className="mt-4 font-display text-3xl">{title}</h3>
9090- <p className="mt-3 text-sm leading-7 text-[var(--muted)]">{description}</p>
9191- </Card>
9292- ))}
9344 </section>
9445 </main>
9546 );
···11+## Context
22+33+Lively Forms already supports the core creator and respondent workflows, but several key surfaces still read like a promotional landing experience rather than a focused internal tool. The current home page, login screen, creator layout, dashboard, and builder all use decorative gradients, showcase blocks, and persuasive copy that add visual weight without adding functional value.
44+55+This change is intentionally presentation-only. The routes, auth model, data flow, and builder/respondent behavior stay the same. The design work therefore needs to be implemented by simplifying component structure, trimming copy, and tightening visual styling without disturbing existing user flows.
66+77+## Goals / Non-Goals
88+99+**Goals:**
1010+- Make the home page a concise product entry surface with clear next actions.
1111+- Remove or reduce decorative sections, promotional messaging, and showcase panels from entry and creator-facing surfaces.
1212+- Align the creator shell, dashboard, and builder with a quieter, more utility-first visual language.
1313+- Preserve all current workflows, routes, and permissions while changing only presentation and copy emphasis.
1414+1515+**Non-Goals:**
1616+- Changing authentication, publishing, response review, or form submission behavior.
1717+- Redesigning the underlying builder interaction model or adding new product capabilities.
1818+- Reworking the public runner experience beyond any styling inherited from shared tokens.
1919+- Introducing a new design system, dependency, or theming framework.
2020+2121+## Decisions
2222+2323+### Decision: Simplify in place rather than introducing a separate "minimal" theme
2424+The implementation will update the existing pages and shared styling tokens directly instead of adding a mode switch or alternate theme.
2525+2626+**Rationale:** The request is to move the product in a clearer minimal direction overall, not to support multiple visual identities. Updating the existing surfaces avoids unnecessary complexity and keeps future maintenance simple.
2727+2828+**Alternatives considered:**
2929+- Add a second theme or style variant: rejected because it introduces maintenance overhead for a single desired direction.
3030+- Limit the change to copy only: rejected because the visual hierarchy and decorative layouts also contribute to the ad-like feel.
3131+3232+### Decision: Preserve page structure and routes while reducing section count and chrome
3333+The home page, login page, dashboard, creator layout, and builder will keep their current route responsibilities, but unnecessary secondary sections and large promotional headers will be collapsed into compact, action-oriented layouts.
3434+3535+**Rationale:** This preserves behavior and navigation while delivering the requested tone shift with low implementation risk.
3636+3737+**Alternatives considered:**
3838+- Merge or remove routes entirely: rejected because the problem is presentation, not information architecture.
3939+- Leave layouts intact and only shorten text: rejected because oversized hero treatments and showcase cards would still dominate the experience.
4040+4141+### Decision: Use concise functional copy as a product rule on key surfaces
4242+Labels and helper text on the affected surfaces will describe what the user can do next, not why the product is appealing.
4343+4444+**Rationale:** The primary complaint is that the interface feels like an ad. Functional copy directly addresses that without changing capabilities.
4545+4646+**Alternatives considered:**
4747+- Keep existing poetic brand voice in a lighter form: rejected because it still risks reading as promotional.
4848+- Remove nearly all copy: rejected because users still need short contextual cues for auth, dashboard actions, and builder state.
4949+5050+### Decision: Reduce ornamental global styling before tuning page-level components
5151+Global background treatments, glassmorphism effects, and strong decorative gradients will be softened or removed first, then page components will be simplified to match.
5252+5353+**Rationale:** A minimal tone will not hold if page markup is simplified but the shared visual environment remains highly styled.
5454+5555+**Alternatives considered:**
5656+- Only update individual components: rejected because the background and shared surfaces would keep the same overall mood.
5757+5858+## Risks / Trade-offs
5959+6060+- **Risk:** Over-simplifying could make the app feel unfinished rather than intentionally minimal. → **Mitigation:** Keep strong spacing, typography, and clear action grouping even while removing decorative sections.
6161+- **Risk:** Copy reductions could remove useful orientation for first-time creators. → **Mitigation:** Replace promotional text with short task-oriented guidance instead of deleting context entirely.
6262+- **Risk:** Shared style token changes could unintentionally affect lower-priority screens. → **Mitigation:** Validate all major surfaces after token updates and use local overrides where shared simplification causes regressions.
6363+- **Risk:** Minimal dashboard and builder chrome may reduce visual separation between sections. → **Mitigation:** Preserve information hierarchy through borders, spacing, headings, and status/action clusters rather than decorative cards.
6464+6565+## Migration Plan
6666+6767+- Implement as a standard UI-only change with no schema, API, or data migration.
6868+- Validate the home page, login page, dashboard, builder, responses, and public form runner visually before merge.
6969+- Roll back by reverting the changed UI files if the reduced treatment removes needed clarity.
7070+7171+## Open Questions
7272+7373+- None at proposal time; the requested direction is specific enough to proceed with implementation decisions during the apply phase.
···11+## Why
22+33+The current UI leans toward a polished landing-page aesthetic with promotional copy, decorative panels, and feature-selling language. For this project, that tone distracts from the actual goal: letting creators get in, manage forms, and review responses with as little friction and visual noise as possible.
44+55+## What Changes
66+77+- Simplify the public home page so it acts as a direct entry point into the product instead of a marketing surface.
88+- Remove promotional sections and ad-like framing such as feature sales copy, showcase panels, and non-essential product-surface highlights.
99+- Simplify creator-facing chrome in the authenticated layout and dashboard so navigation emphasizes core actions over descriptive brand messaging.
1010+- Replace decorative or persuasive copy with short, functional labels and guidance across key entry surfaces.
1111+- Reduce ornamental visual treatments where they compete with clarity, while preserving the existing product functionality and route structure.
1212+1313+## Capabilities
1414+1515+### New Capabilities
1616+- `minimal-ui-surfaces`: Defines a minimal, utility-first presentation for the home page, login page, creator layout, and dashboard so core actions remain clear without promotional framing.
1717+1818+### Modified Capabilities
1919+- `conversational-form-builder`: Align the creator builder surface with the same minimal product chrome and reduce non-essential explanatory copy around editing actions.
2020+2121+## Impact
2222+2323+- Affected code: `app/page.tsx`, `app/login/page.tsx`, `app/(creator)/layout.tsx`, `app/(creator)/dashboard/page.tsx`, `components/empty-state.tsx`, `components/form-builder.tsx`, and shared visual styling in `app/globals.css`.
2424+- No API, database, auth, or dependency changes are expected.
2525+- Existing routes and creator/respondent workflows remain intact; this change is limited to presentation, copy, and interface emphasis.
···11+## ADDED Requirements
22+33+### Requirement: Builder chrome stays focused on editing
44+The system SHALL present the creator builder with concise, editing-focused chrome that emphasizes form status, navigation, and editing actions. The builder SHALL avoid promotional hero copy or decorative overview treatments that compete with the editing workflow.
55+66+#### Scenario: Creator opens the builder
77+- **WHEN** an authenticated creator opens an owned form in the builder
88+- **THEN** the system shows the form title, current status, and core actions needed to edit, publish, copy the link, or review responses without marketing-style framing
99+1010+#### Scenario: Creator reads helper copy in the builder
1111+- **WHEN** an authenticated creator views builder headings, descriptions, or empty states
1212+- **THEN** the system uses short task-oriented copy that explains the current editing context without persuasive or ornamental language
···11+## ADDED Requirements
22+33+### Requirement: Home page acts as a direct entry surface
44+The system SHALL present the home page as a concise entry point into the product with product identity, a short functional description, and a primary action to enter creator flows. The home page SHALL NOT depend on promotional showcase sections or marketing-style product demos to explain the product.
55+66+#### Scenario: Visitor opens the home page
77+- **WHEN** a visitor navigates to the home page
88+- **THEN** the system displays the product name, a short functional description, and a primary action that leads directly to creator sign-in or the dashboard depending on session state
99+1010+#### Scenario: Visitor views the full home page
1111+- **WHEN** a visitor scrolls the home page
1212+- **THEN** the system does not show promotional feature grids, respondent showcase panels, or other ad-like sections that are not required for entry into the product
1313+1414+### Requirement: Creator shell and dashboard prioritize management actions
1515+The system SHALL present authenticated creator surfaces with concise identity, navigation, and management actions. Dashboard content SHALL focus on form creation, form status, and response access without promotional taglines or decorative overview blocks.
1616+1717+#### Scenario: Creator opens the authenticated shell
1818+- **WHEN** an authenticated creator navigates to a creator route
1919+- **THEN** the system shows app identity, essential navigation, and sign-out access without promotional tagline text in the header
2020+2121+#### Scenario: Creator opens the dashboard
2222+- **WHEN** an authenticated creator opens the dashboard
2323+- **THEN** the system emphasizes creating forms, viewing existing forms, and checking status data without marketing-style hero framing or non-essential decorative cards
2424+2525+#### Scenario: Creator has no forms yet
2626+- **WHEN** an authenticated creator opens an empty dashboard
2727+- **THEN** the system shows a concise empty state that explains the next action without sales-oriented or poetic product language
···11+## 1. Shared visual language
22+33+- [x] 1.1 Simplify shared background, surface, and metadata styling in `app/globals.css` and `app/layout.tsx` to support a quieter default presentation
44+- [x] 1.2 Update shared creator-facing support components such as `components/empty-state.tsx` so headings and helper copy stay concise and functional
55+66+## 2. Entry surfaces
77+88+- [x] 2.1 Rewrite `app/page.tsx` into a direct product entry page with a short description, a primary action, and no promotional showcase sections
99+- [x] 2.2 Simplify `app/login/page.tsx` so creator authentication is explained with compact, utility-first copy and layout
1010+1111+## 3. Creator surfaces
1212+1313+- [x] 3.1 Simplify `app/(creator)/layout.tsx` header chrome so it keeps only essential identity, navigation, and sign-out context
1414+- [x] 3.2 Simplify `app/(creator)/dashboard/page.tsx` so form creation, form status, and response access are primary while decorative hero treatments and promotional copy are removed
1515+- [x] 3.3 Update `components/form-builder.tsx` so builder headings, helper text, and top-level chrome are editing-focused and consistent with the minimal direction
1616+1717+## 4. Validation
1818+1919+- [x] 4.1 Visually verify the home page, login page, dashboard, builder, responses, and public runner after shared styling changes to confirm workflows still read clearly
2020+- [x] 4.2 Run the project checks needed for a UI-only change and confirm there are no regressions in the touched surfaces
···5858#### Scenario: Creator unpublishes a form
5959- **WHEN** an authenticated creator unpublishes an owned form
6060- **THEN** the system marks the form as unavailable for new public submissions
6161+6262+### Requirement: Builder chrome stays focused on editing
6363+The system SHALL present the creator builder with concise, editing-focused chrome that emphasizes form status, navigation, and editing actions. The builder SHALL avoid promotional hero copy or decorative overview treatments that compete with the editing workflow.
6464+6565+#### Scenario: Creator opens the builder
6666+- **WHEN** an authenticated creator opens an owned form in the builder
6767+- **THEN** the system shows the form title, current status, and core actions needed to edit, publish, copy the link, or review responses without marketing-style framing
6868+6969+#### Scenario: Creator reads helper copy in the builder
7070+- **WHEN** an authenticated creator views builder headings, descriptions, or empty states
7171+- **THEN** the system uses short task-oriented copy that explains the current editing context without persuasive or ornamental language
+27
openspec/specs/minimal-ui-surfaces/spec.md
···11+## ADDED Requirements
22+33+### Requirement: Home page acts as a direct entry surface
44+The system SHALL present the home page as a concise entry point into the product with product identity, a short functional description, and a primary action to enter creator flows. The home page SHALL NOT depend on promotional showcase sections or marketing-style product demos to explain the product.
55+66+#### Scenario: Visitor opens the home page
77+- **WHEN** a visitor navigates to the home page
88+- **THEN** the system displays the product name, a short functional description, and a primary action that leads directly to creator sign-in or the dashboard depending on session state
99+1010+#### Scenario: Visitor views the full home page
1111+- **WHEN** a visitor scrolls the home page
1212+- **THEN** the system does not show promotional feature grids, respondent showcase panels, or other ad-like sections that are not required for entry into the product
1313+1414+### Requirement: Creator shell and dashboard prioritize management actions
1515+The system SHALL present authenticated creator surfaces with concise identity, navigation, and management actions. Dashboard content SHALL focus on form creation, form status, and response access without promotional taglines or decorative overview blocks.
1616+1717+#### Scenario: Creator opens the authenticated shell
1818+- **WHEN** an authenticated creator navigates to a creator route
1919+- **THEN** the system shows app identity, essential navigation, and sign-out access without promotional tagline text in the header
2020+2121+#### Scenario: Creator opens the dashboard
2222+- **WHEN** an authenticated creator opens the dashboard
2323+- **THEN** the system emphasizes creating forms, viewing existing forms, and checking status data without marketing-style hero framing or non-essential decorative cards
2424+2525+#### Scenario: Creator has no forms yet
2626+- **WHEN** an authenticated creator opens an empty dashboard
2727+- **THEN** the system shows a concise empty state that explains the next action without sales-oriented or poetic product language