Colophon

Intro

This is a living document for me. I am writing it before I write a single line of code or choose a single technology. Its role is to define my goals, guiding principles, and philosophies before building anything, to capture the design system and other visual decisions, to choose the tech stack based on those goals, and to keep all of this public for easy reference.

I am not a front end guy so this page will allow me to learn. It should hold the design system, colors, fonts, reusable components, and other visual decisions. I will define the exact scope as I go.

Purpose of this site

Philosophy and ethics

Build approach

Technology decisions

All choices must align with the goals and principles above. No compromises on privacy, performance or security.

Frontend framework

Astro. Developer friendly, ships no JavaScript by default, hydrates only interactive components when needed, and is fast for users while allowing growth into complex applications.

Styling

Tailwind CSS. Offers helpful constraints, removes unused styles, and is developer friendly.

Hosting and caching

Static hosting on S3 with CloudFront. No backend servers for the main site to reduce cost, complexity, and attack surface. Possible R2 and Cloudflare to play with dual cloud setup, tho this is pointless for such a site.

Analytics and monitoring

GoatCounter. Privacy respecting, cookie free, open source, and lightweight. I have a huge amount of respect for this project.

Automation and DevOps

Simple bash deploy script to build and sync to S3.

Security

Maintain high security standards even for a personal static site.

Dev environment

All design, code, deployment, and ongoing writing can be done from my phone with a folding Bluetooth keyboard using Termux, zsh, tmux, and nvim. Workflows should be fast, repeatable, and automated.

Site structure

Design tokens

bg #0D0F12

surface #14171B

accent #FFB03A

Typography

Heading One

Heading Two

Body text at 16px. Comfortable line-height for dark mode.

Small/meta text.

npm run dev

Spacing & radius

8pt rhythm: p-2=8px, p-4=16px, p-6=24px, p-8=32px.

Components

Buttons

Text link

Card + tags

bitcoin code security