Bolt prompt for a portfolio website
This Bolt prompt builds the portfolio around a data file: six project objects render the work grid, so updating your work never touches markup. Breakpoints, hover lift, and the mobile fallback are pinned to numbers you can check in the preview. The prompt supplies structure; the customizer supplies style, palette, type, and motion.
Last updated
Set up a portfolio one-pager for {{product}} as a project I can iterate on in the live preview. File structure: index.html, css/site.css, js/site.js, and data/projects.js exporting an array of six project objects (title, blurb, result, tags, imagePath). The work grid must render from that array, so editing my work never touches markup.
Page anatomy:
1. Identity hero — the name as the dominant line, then one positioning sentence telling {{audience}} exactly what they'd hire this person for; a small scroll cue at the section's bottom edge.
2. Work grid — render the six projects from data/projects.js into a three-column card grid; hover lifts a card 4px and fades the result line in over the image; each card is a link stub.
3. About band — one first-person paragraph, 60 words max, covering experience and approach; beside it a short facts column (based in, years, tools).
4. Skills row — six plain-text capability chips; no progress bars, no percentages.
5. Contact block — heading, one sentence inviting a specific kind of project, the email link, and two profile links.
Visual direction:
{{style}}
Palette: {{palette}}
Typography: {{type}}
Motion: {{motion}}
Spacing and breakpoints:
- Sections separated by 7rem on desktop, 4rem below 768px; grid gap 1.5rem.
- Below 900px the grid runs two columns; below 600px, one, with the hover reveal swapped for a result line always visible under the image.
The primary call to action is "{{cta}}" — use it verbatim as the contact block's email link text.
Check in the preview when done: editing a title in data/projects.js changes the grid on reload; the grid renders 3, 2, then 1 columns at 1200, 800, and 500px widths; no image is stretched off its ratio; and nothing overflows horizontally at 375px.Customize it
Runs in your browser. Nothing you type here is sent anywhere.
Set up a portfolio one-pager for a project management SaaS as a project I can iterate on in the live preview. File structure: index.html, css/site.css, js/site.js, and data/projects.js exporting an array of six project objects (title, blurb, result, tags, imagePath). The work grid must render from that array, so editing my work never touches markup. Page anatomy: 1. Identity hero — the name as the dominant line, then one positioning sentence telling engineering managers at startups exactly what they'd hire this person for; a small scroll cue at the section's bottom edge. 2. Work grid — render the six projects from data/projects.js into a three-column card grid; hover lifts a card 4px and fades the result line in over the image; each card is a link stub. 3. About band — one first-person paragraph, 60 words max, covering experience and approach; beside it a short facts column (based in, years, tools). 4. Skills row — six plain-text capability chips; no progress bars, no percentages. 5. Contact block — heading, one sentence inviting a specific kind of project, the email link, and two profile links. 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. Spacing and breakpoints: - Sections separated by 7rem on desktop, 4rem below 768px; grid gap 1.5rem. - Below 900px the grid runs two columns; below 600px, one, with the hover reveal swapped for a result line always visible under the image. The primary call to action is "start a free trial" — use it verbatim as the contact block's email link text. Check in the preview when done: editing a title in data/projects.js changes the grid on reload; the grid renders 3, 2, then 1 columns at 1200, 800, and 500px widths; no image is stretched off its ratio; and nothing overflows horizontally at 375px.
Same task in other tools
Questions about this prompt
Can data/projects.js pull from a CMS instead?
Later, yes — the object shape (title, blurb, result, tags, imagePath) is deliberately flat so it maps from any headless CMS response. Ask Bolt to swap the static array for a fetch at load time once you have an endpoint; the grid rendering code doesn't change.
Images look stretched in the grid — what's the fix?
Tell Bolt to enforce a fixed aspect ratio on the card media box — aspect-ratio in CSS with object-fit: cover — rather than sizing images one by one. The acceptance list flags off-ratio images because it's the single most common way portfolio grids go wrong.
What does switching the style dropdown change on a page like this?
The entire visual register: the Visual style block plus the color, type, and motion picks rewrite the look while the data-driven grid, breakpoints, and copy rules hold still. Generating two variants in separate Bolt projects and comparing them side by side in the preview is a cheap way to decide.
Part of the Bolt landing-page cluster — start from the main Bolt landing page prompt.