Tech Stack
Technologies powering the Owner Website.
Core Framework
Next.js 16
Static export for Cloudflare Pages
React 19
UI library
TypeScript
Type-safe development
MDX
Blog articles with rich component library (@next/mdx, @mdx-js/react)
Styling & UI
Tailwind CSS v4
Utility-first CSS
Radix UI
Accessible component primitives
Lucide React
Icon library
AI & Content
Anthropic Claude
AI article generation and excerpt creation
Google Gemini 2.5 Flash
AI thumbnail image generation
CodeMirror 6
Code editor in admin CMS
Remark GFM
GitHub-flavored markdown support
Integrations
Resend
Contact form email notifications
Google Places API
Review aggregation from 3 locations
Unsplash
Image search and download in admin
GitHub API
Article storage and version control via GraphQL
Sentry
Error tracking and performance monitoring
Microsoft Clarity
Session recording and heatmaps
Build & Optimisation
Sharp
Image optimisation and WebP conversion
Biome
Linting and formatting
Bun
Package manager
Deployment & Security
Cloudflare Pages
Static hosting with edge functions
Cloudflare Access
JWT-based admin authentication (RS256, JWKS)
Wrangler
Cloudflare deployment CLI
Environment Variables
| Variable | Service |
|---|---|
ANTHROPIC_API_KEY | Claude AI content generation |
GOOGLE_CLOUD_PROJECT | Gemini image generation |
GOOGLE_CLOUD_CREDENTIALS | GCP service account |
GITHUB_TOKEN | Article storage via GitHub API |
CF_ACCESS_TEAM | Cloudflare Access team name |
CF_ACCESS_AUD | Cloudflare Access audience tag |
GOOGLE_PLACES_API_KEY | Review aggregation |
UNSPLASH_ACCESS_KEY | Image search |
RESEND_API_KEY | Contact form emails |
CONTACT_EMAIL | Recipient for contact form |
SENTRY_DSN | Error tracking |