Design System

Component inventory for the Binary Code Barn website migration. binarycodebarn.com

1. Design Tokens

Color Palette
primary#99bc17
primary-hover#7a9812
primary-text#4a5c0a
primary-subtle#eef5c6
foreground#111111
foreground-secondary#54595f
muted-foreground#6b7280
border#e5e7eb
surface#ffffff
background#fafafa
Spacing & Layout
--radius-sm0.375rem
--radius-md0.75rem
--radius-lg1rem
--radius-xl1.5rem
--radius-full9999px
--shadow-sm0 1px 3px (8% black)
--shadow-md0 4px 12px (10% black)
--shadow-lg0 10px 30px (12% black)
--transition-base150ms ease
--transition-slow300ms ease
Font Family
--font-sansPlus Jakarta Sans
weights400 · 500 · 600 · 700 · 800

1b. Colour Accessibility

WCAG 2.1 requires 4.5:1 for normal text (AA) and 3:1 for large text and non-text UI (focus rings, borders). The table below audits every in-use combination so failures are visible before touching components.

bg-primary + text-primary-foreground (button label)
9.0:1AAA
ring-ring in :root (focus on white bg)
3.3:1AA non-text
text-primary on bg-background (decorative — never used for text)
2.1:1decorative only
text-primary-text on bg-background (headings, badges, eyebrows)
6.8:1AAA
text-primary-text on bg-primary-subtle (badge label)
6.3:1AAA
text-foreground-secondary on bg-background (body)
7.5:1AAA

Resolved: all brand-green text now uses text-primary-text (#4a5c0a, 6.8:1 on background, 6.3:1 on primary-subtle). The raw primary and primary-hover tokens are reserved for decorative fills (dots, borders, backgrounds) — never for text.

2. Typography

All variants come from textVariants() in @/lib/text. Usage: <h2 className={textVariants({ variant: "h2" })}>…</h2>

Prose · eyebrow, h1, lead, h2, h3, p, ul

eyebrow · service overview

h1 · We build digital products that perform.

lead · Senior engineers embedded in your team. A product engineering studio backed by a decade of delivery.

h2 · Section heading with border

h3 · Sub-section heading

p. Body paragraph. Senior engineers embedded in your team, from strategy through launch. One team accountable for the outcome.

  • ul item one. Web Applications
  • ul item two. SaaS Products
  • ul item three. Hybrid Mobile Apps
Global utility · meta, quote, byline

meta

22 April 2026 · Last updated

quote

“Obsessed with structure. Great software is both beautiful and maintainable.”

byline

Adeel Imran. Founder, Binary Code Barn.
Component · card-title, card-body, stat-value, stat-label

card-title (size at call-site)

card-title · default size

card-title · text-2xl

card-title · text-3xl

card-body

A short body paragraph used in card layouts. Sits below the card title and above the call to action.

stat-value + stat-label

10+years of experience

3. Buttons

Primary (filled)
Outline
Ghost / Text

4. Badges & Tags

Variants
NewWeb DevelopmentAI / MLEyebrow Label

5. Inputs & Forms

Text Input
States
Select

6. Cards

Variants

Default Card

Neutral surface, subtle border, light shadow.

Elevated Card

No border, deeper shadow for prominence.

Padding scale
padding="sm"
padding="md"
padding="lg"

7. Service Cards

Grid card (homepage carousel)
📱

Mobile App Design

Sample card copy. Two short sentences showing how the component wraps body text and an optional icon.

🌐

Web Development

Sample card copy. Used to verify icon, title, and body stack correctly at narrow widths.

☁️

Cloud Computing

Sample card copy. Kept short so the visual rhythm is the same across all three cards in the grid.

Service list rows
01

Web Applications

One-line description showing the index, title, and body alignment in list form.

02

SaaS Products

One-line description. The separator and hover affordance come from the component.

03

Hybrid Mobile Apps

One-line description. Useful for verifying truncation behavior on narrow screens.

04

Staff Augmentation

One-line description. The last row omits the bottom border.

8. Stat Counter

Homepage strip (4-column, bg-surface)

10+

Years of Experience

20+

Products Shipped

24h

First Deliverable

100%

On-Time Delivery

Card context (centered grid)

10+

Years of Experience

20+

Products Shipped

24h

First Deliverable

100%

On-Time Delivery

Numbered tile grid (4-column, gap-px border mosaic)
01

Written Scope

Every project starts with a signed document. No verbal agreements.

02

Fixed Price

The number we quote is the number you pay. No hidden line items.

03

Weekly Updates

You get a written summary every Friday. No chasing for status.

04

You Own It

Full IP transfer on delivery. Code, design, and credentials are yours.

Avatar

Sizes
32px
40px
56px
72px
Fallback (broken src)
32px
40px
56px

9. Testimonial

Card (carousel item)
Placeholder testimonial copy. Two short sentences are usually enough. The component renders the quote, name, and rating.
C
Client A
Placeholder testimonial copy. Kept neutral so the visual rhythm of the card is easy to verify across widths.
C
Client B
Carousel navigation dots

10. Blog Post Card

11. Section Header

Centred
Selected work

A placeholder title with one accent word

Placeholder description. One sentence, used to verify eyebrow, title, and description alignment.

Left-aligned
About us

Another placeholder title with a different accent word

Placeholder description. Same component, left-aligned variant, used to compare against the centred version above.

15. Tech Stack Grid

Flutter
Swift
Kotlin
Node.js
AWS
React
.NET
Next.js
TypeScript
PostgreSQL

17. FAQ Accordion

Default (first item open)
Is the fixed price actually fixed?

Yes. The number on the scope document is the number on the invoice. We estimate carefully before signing.

Who actually writes the code?

Adeel Imran. Ten years of senior engineering across four industries, including a 350B pharma client. I write the code. The person you speak to and the person who ships are the same.

What happens after handover?

You own the code. It is yours to run, modify, or hand to another team. A retainer is available but never mandatory.

Component Build Checklist

All components shipped in this design system:

+

components/ui/button.tsx

primary, dark, outline, ghost, sizes

+

components/ui/badge.tsx

primary, dark, outline, eyebrow

+

components/ui/input.tsx

label, error state

+

components/ui/textarea.tsx

label, error state

+

components/ui/select.tsx

label, options

+

components/ui/card.tsx

default, elevated, padding scale

+

components/ui/section-header.tsx

center, left, eyebrow, title, description

+

components/ui/service-card.tsx

icon, title, description

+

components/ui/service-list-item.tsx

icon, title, arrow

+

components/ui/stat-item.tsx

value, label, className

+

components/ui/testimonial-card.tsx

stars, quote, avatar

+

components/ui/blog-post-card.tsx

image, category, date

+

components/ui/faq-accordion.tsx

question/answer accordion, open-first

+

components/ui/mode-toggle.tsx

light/dark theme toggle

+

components/ui/popover.tsx

floating popover primitive

+

components/ui/cover-image/

cover-image + attribution

+

components/layout/navbar.tsx

theme-aware (CSS tokens), mobile drawer

+

components/layout/footer.tsx

multi-column with social links

+

components/logo.tsx

BCB logo mark

+

components/blur-bottom.tsx

gradient blur overlay

+

components/cal-booking.tsx

Cal.com embed

+

components/theme-provider.tsx

next-themes provider

+

components/blog/post-body.tsx

markdown renderer

+

components/blog/blog-card-art.tsx

decorative card art

+

components/sections/Hero

dark bg, illustration slot, dual CTA — inline in page.tsx

+

components/sections/CTABanner

dark, green accent — inline in page.tsx

+

components/sections/TechStackGrid

icon grid with labels — inline in page.tsx

+

components/common/CookieBanner

GDPR bottom-bar — inline in page.tsx