Skip to content

Latest commit

Β 

History

History
79 lines (54 loc) Β· 3.07 KB

File metadata and controls

79 lines (54 loc) Β· 3.07 KB

danalarsen.com

Personal website for Dana Larsen β€” Vancouver-based drug policy reform activist, author, and founder of multiple harm reduction organizations.

Built with Astro, a custom design system, and a focus on accessibility and performance.

Astro CSS License

image

Tech Stack

  • Framework: Astro β€” static-first, component-based architecture
  • Styling: Vanilla CSS with a custom token-based design system (OKLCH color space)
  • Fonts: Self-hosted custom typefaces (CD, Inter) with font-display: swap
  • Images: WebP format, lazy loaded, with astro:assets optimization

Design System

The site uses a two-tier token system defined in src/styles/variables.css:

  • Primitive tokens β€” raw color, spacing, and type values (--blue-200, --sp-04, --font-03)
  • Semantic tokens β€” contextual mappings for surfaces, text, and interactive states (--bg-surface, --text-title, --button-primary)

All colors use the OKLCH color space for perceptually uniform palettes and relative color syntax for hover states and transparency.

Key Features

  • Accessible by default β€” skip links, ARIA labels, visible focus rings, semantic HTML, and prefers-reduced-motion support
  • SEO optimized β€” structured data (Person, WebSite, WebPage), Open Graph / Twitter Card meta, canonical URLs, sitemap, and robots.txt
  • Responsive layout β€” fluid typography with clamp(), container-aware grid layouts, and mobile-first breakpoints
  • Component architecture β€” reusable Astro components (Button, ProjectCard, NewsBlock, SidebarBlock) with scoped styles
  • Performance β€” font preloading, DNS prefetching, lazy-loaded images, and minimal client-side JS

Project Structure

src/
β”œβ”€β”€ assets/graphics/     # SVG icons, social icons, decorative elements
β”œβ”€β”€ components/          # Reusable UI components (Button, Nav, Footer, etc.)
β”œβ”€β”€ layouts/             # Base HTML layout with meta and structured data
β”œβ”€β”€ pages/               # Route entry points
β”œβ”€β”€ sections/            # Page-level sections (Hero, Projects, About, Newsletter)
└── styles/              # Global styles, reset, and design tokens
public/
β”œβ”€β”€ fonts/               # Self-hosted WOFF2/WOFF files
β”œβ”€β”€ images/              # Optimized static images
β”œβ”€β”€ favicon.svg
β”œβ”€β”€ robots.txt
└── sitemap.xml

Getting Started

# Install dependencies
npm install

# Start dev server
npm run dev

# Build for production
npm run build

# Preview production build
npm run preview

Status

🚧 In active development β€” content sections and responsive refinements in progress.


Designed and developed by me. Built to ship, not just to show.