BoilerPrompt
Lovable

Lovable prompt for a portfolio website

A Lovable portfolio prompt that treats the contact form as the product: submissions land in a messages table with budget and project type, ready to triage. Alternating case-study layout and strict copy limits keep the page from drifting into template filler. Choose style, palette, typography, and motion in the customizer to finish it.

Last updated

Prompt
Build a portfolio site for {{product}} whose job is getting {{audience}} to start a conversation — so treat the contact form as a first-class feature. Store submissions in a messages table (name, email, project_type, budget_band, message, created_at) and tell me where to read them. One page, deployed when done.

Sections in order:
1. Hero — the name or studio as the largest element on the page, one sentence beneath it naming the discipline and the clients served, and a single button that scrolls to contact.
2. Selected work — five projects in an alternating editorial layout (image left, text right, then flipped), each with title, client type, a two-line result summary, and a link placeholder; hovering an image lifts it slightly and reveals a "view case" label.
3. About — a short band: a three-sentence bio plus one row of past clients or employers as plain text, no logo wall.
4. Capabilities — a two-column list of services with the concrete deliverable named for each ("brand identity: logo system plus usage guide").
5. Contact — the wired form: fields matching the table above, budget as a select, required-field checks, and a success state that thanks the sender by name and promises a reply window.

Visual direction:
{{style}}

Palette: {{palette}}
Typography: {{type}}
Motion: {{motion}}

- Vertical rhythm: 112px between sections on desktop, 64px on mobile; inside a section nothing tighter than 16px or looser than 48px.
- Mobile: the alternating rows become image-over-text cards, and the budget select stays a native control.

The primary call to action is "{{cta}}"; put that text on the hero button and the form submit, nowhere else.

Verify after building: a test submission appears in messages with all six fields; an empty required field blocks submit and marks only that field; the success state prints the sender's name; and the deployed URL takes a submission end to end.

Customize it

Runs in your browser. Nothing you type here is sent anywhere.

Your customized prompt
Build a portfolio site for a project management SaaS whose job is getting engineering managers at startups to start a conversation — so treat the contact form as a first-class feature. Store submissions in a messages table (name, email, project_type, budget_band, message, created_at) and tell me where to read them. One page, deployed when done.

Sections in order:
1. Hero — the name or studio as the largest element on the page, one sentence beneath it naming the discipline and the clients served, and a single button that scrolls to contact.
2. Selected work — five projects in an alternating editorial layout (image left, text right, then flipped), each with title, client type, a two-line result summary, and a link placeholder; hovering an image lifts it slightly and reveals a "view case" label.
3. About — a short band: a three-sentence bio plus one row of past clients or employers as plain text, no logo wall.
4. Capabilities — a two-column list of services with the concrete deliverable named for each ("brand identity: logo system plus usage guide").
5. Contact — the wired form: fields matching the table above, budget as a select, required-field checks, and a success state that thanks the sender by name and promises a reply window.

Visual direction:
Minimal dark style. Near-black canvas (#0A0A0B) with one elevated surface tone (#141416) for cards — never more than two surface steps. Hairline borders (1px, white at 8% opacity) instead of shadows; if a shadow is unavoidable use 0 1px 2px rgba(0,0,0,0.4) and nothing softer. Text in exactly three steps: white at 92% for headings, 60% for body, 40% for captions. Generous negative space — section padding at least 120px on desktop, 64px on mobile. The accent color appears only on interactive elements and one hero highlight, nowhere else.

Palette: a strict neutral ramp (white, #F5F5F5, #E5E5E5, #737373, #171717) carries the entire interface; pick one accent and use it only for primary CTAs, active states, and a single hero highlight. If the accent appears more than five times per viewport it stops being an accent. Keep semantic colors (success, error) desaturated so the accent stays in charge.
Typography: one geometric sans (a Futura/Poppins-class face) at three weights maximum (400/500/700). Scale: 64-88px hero, 32px section heads, 18px lede, 16px body, 13px caps labels with 0.08em tracking. Tight headline leading (1.05-1.1), relaxed body (1.6). Let the geometry carry the personality — no italics; weight and size do all hierarchy.
Motion: none. Zero scroll animations, zero entrance effects — the page is fully composed the instant it paints. Spend the motion budget on input feedback instead: 120-150ms ease-out color and transform transitions on hover and press states only. Hold this constraint absolutely; it is a statement, not an omission.

- Vertical rhythm: 112px between sections on desktop, 64px on mobile; inside a section nothing tighter than 16px or looser than 48px.
- Mobile: the alternating rows become image-over-text cards, and the budget select stays a native control.

The primary call to action is "start a free trial"; put that text on the hero button and the form submit, nowhere else.

Verify after building: a test submission appears in messages with all six fields; an empty required field blocks submit and marks only that field; the success state prints the sender's name; and the deployed URL takes a submission end to end.

Same task in other tools

Questions about this prompt

Where do contact submissions go, and can I get notified?

They insert into the messages table Lovable creates (Supabase under the hood). Ask Lovable to add an email notification on new rows via an edge function, or just check the table — the budget_band and project_type fields exist so you can triage inquiries without opening every message.

Five projects feels like the wrong count for my work — can I change it?

Yes; the alternating layout holds at any count, and odd totals simply end on an unflipped row. Ask Lovable to adjust, but keep the two-line result summary per entry — trimming those to bare titles is the fastest way to make the page read generic.

How do I match an existing brand instead of using a customizer style as-is?

Pick the customizer combination closest to your brand so the structure lands well, then hand Lovable your exact tokens afterward: hex values, font names, corner radius. Concrete overrides get applied; "make it feel more like my brand" doesn't.

Part of the Lovable landing-page cluster — start from the main Lovable landing page prompt.

Related prompts