Skip to main content

Site Meta

Information about this website, its technology, and the people who made it possible.

Purpose

This is Ewan's personal website (ewancroft.uk) serving as a creative outlet, digital garden, and demonstration of AT Protocol's potential for personal publishing. The site showcases custom lexicons, distributed data fetching with intelligent fallbacks, and full user control over content and presentation. It includes blog posts via Leaflet and WhiteWind, music scrobbling via teal.fm, code repositories via Tangled, and dynamic link aggregation via Linkat—all powered entirely by AT Protocol data stored in a personal data server.

History

This website was first launched in 2023.

Privacy

This website (ewancroft.uk) respects your privacy and operates with complete transparency. Storage: Only localStorage is used to enhance your experience by remembering theme preferences and wolf mode state—this data never leaves your device and is not accessible to me or any third parties. Third-party content: Embedded content (videos, music widgets, external links) may load resources from their respective services, potentially setting cookies outside my control. Data collection: Zero. No analytics, no tracking pixels, no fingerprinting, no data mining, no telemetry of any kind. Everything is client-side or fetched from your own AT Protocol data. Verification: The entire website source code is open and available for inspection at github.com/ewanc26/website. You can verify there's no hidden tracking or data collection. Control: You can clear localStorage via browser settings at any time, disable JavaScript entirely (though some features won't work), or use privacy-focused browsers and extensions. AT Protocol data: All blog posts, profile information, and other content come from AT Protocol records in personal data servers—data you own and control, not data I collect from you.

Technology Stack

Svelte 5

Modern reactive framework with runes for building efficient web applications using fine-grained reactivity

SvelteKit 2

Full-stack web framework for building fast, efficient web applications with Svelte, featuring server-side rendering, API routes, and file-based routing

Tailwind CSS 4

Next-generation utility-first CSS framework with native CSS support, improved performance, and enhanced developer experience

@tailwindcss/typography

Official Tailwind CSS plugin providing beautiful typographic defaults for prose content and blog posts

Vite

Fast build tool and development server with native ES modules, hot module replacement, and optimised production builds

TypeScript

Typed superset of JavaScript providing static type checking for better development experience, code quality, and refactoring confidence

AT Protocol

Federated protocol for large-scale distributed social applications, providing cryptographic identity (DIDs), content-addressing via CIDs, lexicon-based federation, and personal data server infrastructure

@atproto/api

Official TypeScript client library for AT Protocol providing type-safe access to XRPC methods, record operations, and PDS interactions

Node.js

JavaScript runtime for server-side development powering SvelteKit's server-side rendering and API endpoints

Prettier

Opinionated code formatting tool ensuring consistent style across the entire codebase with automatic formatting

prettier-plugin-svelte

Prettier plugin for formatting Svelte components with proper syntax handling and script/style block formatting

prettier-plugin-tailwindcss

Prettier plugin for automatically sorting Tailwind CSS classes according to recommended order for consistency

Lucide Icons (Svelte)

Beautiful and consistent icon library for Svelte applications providing customisable SVG icons with tree-shaking support

hls.js

JavaScript library implementing HTTP Live Streaming protocol for video playback in browsers without native HLS support

Open Source

This website is designed for the AT Protocol ecosystem, demonstrating distributed data fetching, custom lexicon implementation, and user-owned publishing. The entire codebase is open source and available for inspection, modification, and learning. There is no hidden tracking or data collection—the transparent nature of the code allows anyone to verify this commitment to privacy. Contributions, forks, and adaptations are welcome under the AGPL 3.0 license.

Credits

Inter

by Rasmus Andersson

Variable font family used for the website UI (headings and body text)

Svelte

Reactive JavaScript framework with Svelte 5 runes support for modern reactive programming

SvelteKit

Application framework for Svelte with server-side rendering, routing, and API endpoints

Tailwind CSS

Utility-first CSS framework for rapid UI development with Tailwind 4 native CSS support

@tailwindcss/typography

Typography plugin for Tailwind CSS providing beautiful typographic defaults for prose content

Vite

Next generation frontend build tool with fast HMR and optimised production builds

TypeScript

Typed superset of JavaScript adding optional static types for better development experience

Prettier

Opinionated code formatter supporting multiple languages for consistent code style

prettier-plugin-svelte

Prettier plugin for formatting Svelte components with proper syntax handling

prettier-plugin-tailwindcss

Prettier plugin for automatic and consistent Tailwind CSS class ordering

Lucide Icons

Icon library providing consistent, customisable SVG icons for the website interface

hls.js

JavaScript library for HTTP Live Streaming client supporting video playback

@atproto/api

Official type-safe TypeScript client library for interacting with AT Protocol services, personal data servers, and distributed repositories

cspell

Spell checking tool for code and documentation with custom dictionary support

VS Code

Code editor with workspace configuration and Svelte language support