rapid-portfolio is a personal portfolio website for its owner, Keyur. Its product intent is twofold and comes directly from the authoritative requirement thread:
The audience is the portfolio's visitors — recruiters, hiring managers, collaborators and peers who scan many portfolios and judge craft within seconds — plus the owner, who maintains and upgrades the presentation of their own work and profile.
The reference site keyur53987.github.io was declared as a content_source, structure_reference and visual_inspiration with supplemental authority, but it could not be fetched or inspected during evidence gathering. Its content, navigation structure and visual design are therefore unverified. The owner's work and information are treated as owner-supplied content at build time, and the visual direction upgrades whatever baseline exists rather than copying it. No facts are invented to fill the gap.
rapid-portfolio is a single-surface, publicly reachable personal portfolio site. It is delivered as a custom first-party web UI. There is no account system, no sign-in, and no differentiated permissions: the site is anonymous and public by design, and every visitor sees the same content.
Actors
Accepted behavior
Ownership and exclusions
keyur53987.github.io is a baseline reference only; it is not a destination inside rapid-portfolio and no content from it is asserted as verified.rapid-portfolio is a public, anonymous, single-page portfolio. Delivery is first-party custom UI served as a static-style web experience; there is no provider-owned surface and no external destination that owns accepted behavior. Because no accepted journey requires a visitor to privately own or resume durable state, and no commitment, entitlement or value transfer must remain bound to a specific participant, no application-owned identity is introduced. The Landing page is reachable without any identity step, and no protected destination exists.
The current delivery horizon covers the Landing surface and its content: hero, work, about, writing, contact. The reference URL keyur53987.github.io is treated as an unverified baseline — its content is supplied by the owner at build time, and its UI is superseded by the editorial direction in this document rather than reproduced.
Future items (see Section 11) are explicitly out of current scope and must not appear in current pages or acceptance criteria.
The reference directive for keyur53987.github.io declares content_source, but the source was unverified — content not accessible or fetchable. No factual entities, collection items, fields, values, descriptions, dates, contacts, links or media references could be verified from it. Accordingly, no inventory of source facts is asserted here. The owner's work and information are owner-supplied at build time; the site must render whatever the owner supplies without inventing facts.
The single public surface of rapid-portfolio. It is anonymous, publicly reachable, and presents the owner's work and information as one continuous editorial page.
Information and state
Primary actions
Supporting actions
work, about, writing, contact).Domain entities
Component responsibilities
work, about, writing, contact) with a 2px accent underline that slides to the active section; sits on a 1px hairline.see the work ↓ control. Right 5 columns: full-bleed monochrome portrait or hero work image, cropped to touch the top and right viewport edges, 0px radius, no shadow.let's talk set in Playfair across the viewport width, with the email address cut into the counter of one letter as a link, over a thin rule.States
FR-1 — Public portfolio entry As a Visitor, I should land on a public portfolio page that presents the owner's work and information, so that I can evaluate the owner without any account or gate.
FR-2 — Hero statement As a Visitor, I should see the owner's name and a one-line description of what they do as the first thing on the page, so that I immediately understand who this is.
see the work ↓ or scrolls.FR-3 — Browse the work list As a Visitor, I should browse the owner's work as a list of ruled editorial rows, so that I can scan projects quickly.
work.FR-4 — Hover thumbnail preview As a Visitor, I should see a monochrome thumbnail appear in the right margin when I hover or focus a work row, so that I can preview a project without leaving the list.
FR-5 — Open a work entry As a Visitor, I should open a work entry to see its detail, so that I can understand what the owner actually did.
FR-6 — Read the owner's profile As a Visitor, I should read the owner's about information, so that I can judge fit and background.
about or scrolls to the block.writing or contact.FR-7 — Read the owner's writing As a Visitor, I should read the owner's written pieces, so that I can see how the owner thinks.
writing or scrolls to the block.contact.FR-8 — Contact the owner As a Visitor, I should reach the owner's email from the contact block, so that I can start a conversation.
let's talk headline.FR-9 — Section navigation As a Visitor, I should move between work, about, writing and contact from a fixed top bar, so that I can reach any part of the page directly.
FR-10 — Maintain and upgrade the portfolio As the Portfolio Owner, I should maintain and upgrade the presentation of my own work and profile, so that the site keeps representing me well.
Product context. The owner is the person whose portfolio this is — the same person who previously built keyur53987.github.io. That earlier site is the baseline: rapid-portfolio exists to upgrade both its UI and its information. The owner is not a passive subject of the site; they are its author and its maintainer.
Primary goal. A polished, well-designed site that represents them accurately and confidently, and that they can keep upgrading as their work changes.
Distinct accepted responsibilities. The owner supplies and maintains the work entries (project name, role, year, optional image, optional detail), the profile information, the writing entries, and the contact address. The owner also owns the presentation decision — the site must read as authored, not templated.
Relevant inputs and decisions. Which projects to show and in what order; what role and year to attach to each; which image represents each project, or whether a project gets a typographic plate instead; what the positioning sentence says; what the about text says; what the contact address is.
Interactions with other accepted participants. The owner's content is what the Visitor reads. The owner's success is measured by whether a Visitor can quickly find and understand the work and profile, and can reach the owner.
Observable success. The Landing page renders the owner's name, positioning sentence, work rows, about text and contact link correctly; hovering a work row crossfades its thumbnail; the nav underline tracks the active section; the page reads as an editorial magazine cover rather than a generic SaaS template.
Constraints carried from source. The reference site's content could not be verified, so the owner supplies content at build time; nothing may be invented on the owner's behalf.
Product context. The visitor is a recruiter, hiring manager, collaborator or peer who scans many portfolios a week and judges craft within the first three seconds. They arrive with no prior relationship to the site and no patience for friction.
Primary goal. Easily find and understand the owner's work and information.
Distinct accepted responsibilities. The visitor scans the hero, browses the work list, previews entries by hovering, opens entries that interest them, reads the about and writing blocks, and uses the contact block if they want to reach out.
Relevant inputs and decisions. Which work rows to preview and open; whether the profile and writing are worth reading further; whether to make contact.
Interactions with other accepted participants. The visitor is the audience for the owner's content and the initiator of any contact with the owner.
Observable success. The visitor reaches the work list without friction, sees a thumbnail on hover, opens an entry, and finds the email address in the contact block.
Constraints carried from source. The visitor is anonymous — no account, no gate, no sign-in stands between them and the portfolio.
see the work ↓ or scrolls. The work list appears as ruled editorial rows — project name in 40px Playfair, role and year in 13px uppercase Archivo, right-aligned.about or writing. The 2px accent underline slides to the active word.let's talk in Playfair across the viewport width, with the email address cut into the counter of one letter.The creative direction is authoritative for this section. It is editorial swagger after Tobias van Schneider — oversized type, black-and-one-hot-accent, a portfolio that reads like a magazine cover. The headline idea: this is not a company site, it is a person with taste.
| Role | Hex | Use |
|---|---|---|
| Background | #0E0E0E | Near-black ink ground; the dominant surface |
| Surface | #171717 | Panels lift only 5% — felt, not seen |
| Text | #F4F1EA | Warm off-white type; never pure #FFFFFF |
| Primary | #F4F1EA | Primary type and rule colour |
| Accent | #FF3B1F | Vermilion spot colour |
| Muted | #8A857C | Metadata, dates, captions |
Accent ratio target: 82% ground, 14% off-white type, 4% accent. The accent is used like a printer's spot colour: the owner's name in the hero, the active nav underline, one word per section label, link hovers, and the thin rule under the contact block. It must never appear twice in one viewport except in the hero.
clamp(56px → 160px), leading 0.88–0.94, tracking -0.02em, sentence case, with the owner's name occasionally in italic for a magazine-cover gesture. Headings are the layout: they occupy whole columns and may overlap rules and images.Sharp corners everywhere — 0px radius on cards, images, buttons and inputs. Structure comes from 1px hairlines (rgba(244,241,234,0.14)) and full-bleed colour blocks, not from shadows or rounding. Buttons are rectangular text-plus-rule, not pills. The only curve in the system is the italic swash of Playfair in the hero. Images are hard-cropped rectangles, occasionally bleeding off the right edge of the grid.
Asymmetric editorial grid: 12 columns, 24px gutters, 96px outer margin on desktop, 20px on mobile. The hero is a 7/5 split — a 7-column stacked headline against a 5-column full-bleed portrait or monochrome work image. Sections alternate rhythm: full-bleed type band, then a 4-column metadata rail beside an 8-column project list. Project entries are ruled rows that open on hover rather than cards. Navigation is a fixed top bar of four lowercase words (work, about, writing, contact) with a 2px accent underline that slides; no logo lockup, just the owner's name in 13px uppercase at left. The footer is one oversized let's talk set in Playfair across the full viewport width with the email cut into it.
Large-scale monochrome work screenshots and one portrait, treated with a warm duotone (ink #0E0E0E → off-white) so they sit inside the palette instead of fighting it. Images are cropped hard and often bleed off-grid. No stock photography, no 3D blobs, no illustrations. Where a project has no visual, show a typographic plate: the project name set in Playfair over a flat accent or surface block.
The magazine cover. The first screen is a 7/5 asymmetric split on near-black, composed as a cover rather than a landing page.
#FF3B1F italic, sitting on the baseline of a 1px off-white rule that runs to the viewport edge. Below it, one 19px Archivo sentence — Designer and developer building fast, considered interfaces. — and a rectangular see the work ↓ control made of text plus a 40px rule, with no button fill.No gradient, no centred stack, no blue button, no floating cards — it reads as a magazine cover, not a SaaS landing page.
Signature moves carried through the page:
let's talk set in Playfair across the entire viewport width in the footer, with the email address cut into the counter of one letter as a link.Interaction Model: Animated Motion Tempo: restrained Hero Dimensionality: flat
cubic-bezier(0.16, 1, 0.3, 1). The rule extends to the viewport edge as the second line settles. The outcome is a composed first frame that reads as a magazine cover, with the name fully legible before any interaction.#0E0E0E; the owner's name occupying the left 7 columns; the vermilion italic second line on the hairline rule; the 19px Archivo sentence and the text-plus-rule see the work ↓ control below; the full-bleed monochrome image touching the top and right viewport edges; the fixed 13px uppercase nav on a hairline above.prefers-reduced-motion: reduce, all mask reveals and crossfades resolve instantly to their final state. The hero renders fully composed on first paint, the nav underline jumps rather than slides, and hover thumbnails appear without a crossfade. No content is hidden behind motion.NFR-1 — Public anonymous access. The Landing page must be reachable without any account, sign-in, or gate. Provenance: explicit (public portfolio) with required_inference for the absence of identity. Rationale: no accepted journey requires durable actor-specific state.
NFR-2 — First-paint legibility. The hero name and positioning sentence must be legible on first paint, before any scroll-triggered reveal completes. Provenance: required_inference. Rationale: visitors judge craft within three seconds; motion must not delay comprehension.
NFR-3 — Reduced-motion compliance. All motion must respect prefers-reduced-motion: reduce and resolve to final states without animation. Provenance: required_inference. Rationale: accessibility of the accepted motion design.
NFR-4 — Contrast. Off-white #F4F1EA on #0E0E0E and vermilion #FF3B1F on #0E0E0E must meet accessible contrast for their text sizes; muted #8A857C is reserved for metadata and captions, not body copy. Provenance: required_inference. Rationale: the palette is fixed by the creative direction, so legibility must be preserved within it.
NFR-5 — Image fallback integrity. Any image that fails to load must fall back to its typographic plate without breaking layout or removing the entry's readability. Provenance: required_inference. Rationale: the work list is the core content and must survive missing media.
NFR-6 — Responsive grid. The 12-column asymmetric grid must collapse to a 20px-margin mobile layout while preserving the hero's type hierarchy and the ruled-row work list. Provenance: required_inference. Rationale: the layout is specified for desktop and mobile margins.
NFR-7 — No invented content. The site must render only owner-supplied work, profile, writing and contact information; no placeholder facts may be presented as the owner's. Provenance: explicit (the reference content source was unverified). Rationale: the baseline site could not be inspected, so no facts may be fabricated.
No database, authentication provider, container orchestration or Kubernetes layer is required by any accepted requirement.
Assumptions
keyur53987.github.io remains unverifiable; no content, structure or visual detail from it is asserted. Its role is baseline reference only.Constraints
#FF3B1F.system-ui are forbidden for any text.Future (out of current scope)
rgba(244,241,234,0.14) used as the only structural divider.#0E0E0E to off-white so imagery sits inside the palette.keyur53987.github.io, the owner's previously made site, used as reference for content and as the UI to upgrade; its content was unverified.
Design systems · 2025
A component library and token system built for a multi-product team, covering type scale, spacing, colour roles and interaction states.
Product interface · 2024
An accounting surface redesigned around a single ruled table, with inline editing and a summary rail that never leaves the viewport.
Data tooling · 2024
A monitoring console that trades dashboard tiles for one dense, scannable stream with keyboard-first navigation.
Editorial site · 2023
No further detail has been published for this project.
I design and build interfaces end to end - from the first type decision to the last interaction state. I care about speed, restraint and the small details that make software feel authored rather than assembled.
Why the headline should carry the grid instead of sitting inside it.
Performance is not an engineering afterthought; it is the first thing a visitor feels.
One accent colour, one rule weight, one idea per screen.

Design systems · 2025
A component library and token system built for a multi-product team, covering type scale, spacing, colour roles and interaction states.
Product interface · 2024
An accounting surface redesigned around a single ruled table, with inline editing and a summary rail that never leaves the viewport.
Data tooling · 2024
A monitoring console that trades dashboard tiles for one dense, scannable stream with keyboard-first navigation.
Editorial site · 2023
No further detail has been published for this project.
I design and build interfaces end to end - from the first type decision to the last interaction state. I care about speed, restraint and the small details that make software feel authored rather than assembled.
Why the headline should carry the grid instead of sitting inside it.
Performance is not an engineering afterthought; it is the first thing a visitor feels.
One accent colour, one rule weight, one idea per screen.
No comments yet. Be the first!