main
src/pages/AckerWorx Engineering.vue
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950

Build Notes

Short engineering notes on specific implementation details and decisions.

2025-01Infrastructure

Static Site Generation with Nuxt 4

Configured Nuxt 4 for pure SSG output targeting Cloudflare Pages. The key configuration points:

  • nitro.preset: 'static' ensures no server runtime is included
  • nitro.prerender.crawlLinks: true discovers all routes automatically
  • View transitions enabled for smoother navigation

Build output is a static directory that deploys directly to Cloudflare Pages without any build configuration on their end.

2025-01Tooling

UnoCSS Over Tailwind

Chose UnoCSS for atomic CSS instead of Tailwind. The decision factors:

  • Zero runtime - All CSS is extracted at build time
  • Smaller output - Only generates CSS for classes actually used
  • Same DX - preset-wind provides Tailwind-compatible utilities
  • Better extensibility - Shortcuts and custom rules are cleaner

The preset-typography handles prose styling for content pages, and preset-web-fonts loads Inter and JetBrains Mono.

2025-01Architecture

Edge-First Event Processing

Moved event processing to Cloudflare Workers instead of a centralized backend. Results:

  • P99 latency dropped from 180ms to 45ms
  • No cold starts - Workers are always warm at edge locations
  • Durable Objects handle stateful aggregation without external databases

The trade-off is increased complexity in debugging distributed state, but the latency improvements justify it for our use case.

2025-01Security

Content Security Policy Configuration

Implemented strict CSP headers for all pages:

  • default-src 'self' as the baseline
  • script-src 'self' with no inline scripts
  • style-src 'self' 'unsafe-inline' for UnoCSS (working on removing unsafe-inline)
  • img-src 'self' data: for inline SVGs

Headers are set via Cloudflare Pages _headers file for static sites, or via Workers for dynamic content.

2025-01Performance

Font Loading Strategy

Using UnoCSS preset-web-fonts with the following approach:

  • System font stack as fallback - page is usable immediately
  • Inter for body text - only weights 400, 500, 600, 700
  • JetBrains Mono for code - only weights 400, 500
  • font-display: swap to prevent invisible text

Total font weight: ~120KB (woff2). First contentful paint is not blocked by font loading.

main0 errors0 warnings
Ln 1, Col 1Spaces: 2UTF-8Vue