Direction: the familiar, slightly off-axis home.

Approved A, grounded in versions/v1 + v2: burgundy on warm paper, peach portrait framing, Newsreader display type and Lato. A personal personal greeting leads; projects carry the substance; the notification stream shares smaller changes from around Burooj's internet.

We considered the activity-first desk and the navigation-first circular index. The welcome stays because it is the direction Burooj selected. The composition revision pairs portrait with introduction and brings the first project into the opening screen. Its layout still awaits Burooj's visual review; preserving the palette is not enough on its own.

The hero, in context

Burooj Rashid wearing round sunglasses
That's me

Hey there!

Burooj here!

Frontend developer & designer

I make places on the web. Feel free to look around!

Composition → WelcomeHero imports Heading, Link, and the singular Portrait. The curved arrow below is retained as a historical specimen, no longer placed between the homepage introduction and work.

Circles, without controls

The old menu's unequal burgundy and peach circles return as static artwork beside the desktop introduction. They have no labels, hover effects or click targets and are hidden from assistive technology. Compact layouts omit the cluster so the text and real navigation retain their space.

Foundations

Paper --color-page
Burgundy --color-accent
Peach --color-surface-strong
Note --color-surface
Ink --color-text
Quiet ink --color-text-soft
Rule --color-border

Newsreader gives the page its voice.

Lato does the everyday work: introductions, metadata, navigation, and notes.

  • Quiet metadata
  • Readable detail
  • No decorative pills

Shared colors, type scales, spacing, focus rings and motion timing live in src/design/tokens.css. The decorative corner alone owns its magnetic spring mechanics. Responsive contracts are 40.625rem and 62.5rem. Native media conditions cannot consume custom properties.

Links and wayfinding

A regular menu uses the same typography and link language as the rest of the site. The current destination has a burgundy underline and stronger weight. Every destination stays visible on mobile and works without JavaScript.

Text links use a quiet underline and small directional arrows. Outbound arrows lift with the pointer. Tab has a visible ring. Navigation remains text; stronger rectangular actions are reserved for project destinations.

From parts to real content

Nov 2024 · Development

API3 Ecosystem

A discovery site where developers could publish and explore dApps in the API3 ecosystem, combining product UI, data-rich browsing, and supporting content.

  • Nuxt3

Nov 2024 · Development

API3 Ecosystem

A discovery site where developers could publish and explore dApps in the API3 ecosystem, combining product UI, data-rich browsing, and supporting content.

  • Nuxt3

Nov 2024 · Development

API3 Ecosystem

A discovery site where developers could publish and explore dApps in the API3 ecosystem, combining product UI, data-rich browsing, and supporting content.

  • Nuxt3

Currently

I’m maintaining bjslab, my home-lab environment for the tools and services I use.

Little signals from around my internet.

A few things worth sharing, collected by hand.

A note can hold arbitrary content without inventing a new card style.

Audio + interaction · CodePen

Beating Shapes

What if shapes could keep time? A black-and-white rhythm experiment that moves geometric forms to the tempo of a track.

Project art specimen

A smaller section title

The same heading grammar serves secondary sections.

API3 Ecosystem cover image

Work, over time

2024

  1. API3 Ecosystem

    A discovery site where developers could publish and explore dApps in the API3 ecosystem, combining product UI, data-rich browsing, and supporting content.

    • Nuxt3

Anatomy and contracts

Component Parts / slots Variants State and boundary
SiteNavSemantic navigation list → shared Link primitiveText links; current / hover / focus / pressAlways visible and wrapping on small screens. Current page has a strong underline; project details retain the Projects marker. No navigation animation or JavaScript dependency.
LinkLabel → optional decorative arrowText / navigation / action; paper / wineNative navigation; hover, focus, press, current, disabled. Disabled is a span.
HeadingSemantic heading → text or Link slotDisplay / page / section / card / label; level 1–4Level does not change visual scale. No interactive behavior.
MediaFrameTextured surround → imageContain / coverReserved media space. Optional pointer shortcut beside an accessible title link; no duplicate tab stop.
NotePeach silhouette → arbitrary content slotPaper silhouette / plain contentPassive. No button behavior or card shadow.
TagListLabeled list → items + editorial separatorsOne metadata recipeNot controls; never styled like clickable filters.
ProjectRowMediaFrame + Heading/Link + summary + TagListRow / stack / featureFeatured work on Home and this guide; ProjectTimeline uses the same primitives for the full chronology.
CurrentNote / UpdateEntryNote + Heading + Link / event glyph + sentence + date + provenanceCanonical current note / mixed notification streamProjects persist; updates mark anything that changed. Curated events are not live presence.
SectionHeading / PageHeader / SectionIntroHeading + optional context and LinkSection navigation / page title / compact introNever duplicate heading typography in the wrapper.
LabCard / MediaRailMediaFrame + Heading/Link / image-video sequenceLab listing / detail mediaVideo has native controls, no autoplay.
SiteHeader / SiteFooterIdentity + SiteNav / identity + contact LinksSame shared chrome on every routeActive route is semantic; Resume remains available in footer.

Shared colors and geometry belong to tokens; interaction belongs to its public component; assemblies import their children. The portrait, curve stay singular. Do not paste navigation markup into a page, put raw palette values in a composition, or fork project rows for this guide.