Skip to content

Latest commit

 

History

History
60 lines (42 loc) · 1.8 KB

File metadata and controls

60 lines (42 loc) · 1.8 KB

jk.com

Personal site and blog for Jayson Knight, built on a modern edge-first stack.


Tech Stack

Layer Technology
Framework Astro 6 — server-rendered, edge-optimised
UI Components Svelte 5
Styling Tailwind CSS 4
Language TypeScript 5
Runtime / Deploy Cloudflare Workers (via @astrojs/cloudflare)
CMS EmDash — headless blog CMS for Astro
Database Cloudflare D1 (SQLite at the edge)
Media Storage Cloudflare R2
Edge Cache / Sessions Cloudflare KV
Analytics Cloudflare Analytics Engine
Build tooling Vite 8 w/ Rolldown (Rust compiler, default in Astro 6)
Fonts Google Fonts via Astro's built-in Fonts API (Space Grotesk, JetBrains Mono)
API layer Hono
Validation Zod 4
Syntax highlighting Shiki 4

Blog

The blog is powered by EmDash, a headless CMS built for Astro. Content is stored in a Cloudflare D1 database; media assets live in R2.


Getting Started

# Install dependencies
npm install

# Start local dev server
npm run dev

# Build for production
npm run build

# Run unit tests
npm run test

# Deploy to Cloudflare Workers
npm run deploy

Requires Node ≥ 24 and a Cloudflare account with D1, R2, KV, and Analytics Engine resources provisioned. See wrangler.jsonc for binding names and npm run db:create to initialise the D1 database.


Environment

Copy .env.example to .env and populate the required values. Secrets should be set via wrangler secret put for production deployments.