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