crucıble

Portfolio

A full single-page portfolio landing template for a developer or designer: a striking hero (name, role, one-line pitch) over a soft WebGL gradient mesh, a selected-work grid of tilting Facet cards, a count-up metrics band, an about + skills section, a compact experience timeline, and a contact footer — every string a prop, one cool indigo accent knob, fully reduced-motion-safe.

oglpro

Installation

CLI

npx shadcn@latest add @crucible/portfolio

Manual — install dependencies, then copy the source

npm install motion ogl

Props

PropTypeDefaultDescription
namestring"Noa Ellison"Your name, oversized in the hero and shown in the nav.
logoReact.ReactNodea monogramInline logo mark (a 1em-scalable SVG using currentColor).
rolestring"Design Engineer"Role line under the name, e.g. "Design Engineer".
kickerstring"Available for select work"Short kicker above the name.
pitchstringHero pitch paragraph, revealed word by word.
navPortfolioNavItem[]Top navigation links.
primaryCtaPortfolioAction"View work"Primary hero CTA.
secondaryCtaPortfolioAction"Get in touch"Secondary hero CTA.
projectsPortfolioProject[]Selected-work entries.
metricsPortfolioMetric[]Headline metrics shown as a count-up band.
aboutstringAbout statement paragraph.
skillsPortfolioSkillGroup[]Skill clusters.
experiencePortfolioExperience[]Experience / timeline entries.
contactEmailstring"hello@noaellison.studio"Contact email rendered as the oversized footer link.
contactHeadlinestring"Have a project in mind?"Short line above the contact email.
socialsPortfolioSocial[]Footer social links.
footerNotestringClosing footer line.
accentstring"#818cf8"The single cool accent (indigo by default) used for rules, chips, hover states, and the hero glow.
Also accepts all props of Omit<React.ComponentPropsWithoutRef<"div">, "children">they pass through to the underlying element.

Honors prefers-reduced-motion with a designed static fallback, pauses offscreen and on hidden tabs, and passes className through.