antoniosarro.dev Svelte Themes

Antoniosarro.dev

šŸš€ My corner of the internet, built with SvelteKit & obsessive performance optimization. Static site that rebuilds at midnight like a vampire's cron job.

antoniosarro.dev

A high-performance portfolio & blog built from scratch

Because using a template is like ordering pizza when you're a chef šŸ•



Live Site • Blog • Changelog


✨ Features

  • šŸ—ļø Static Generation — Pre-rendered at build time, served at the speed of light
  • šŸŒ™ Midnight Rebuilds — Fresh data every night via CI/CD (GitHub contributions, project stats)
  • šŸ“ Custom MDX Pipeline — Syntax highlighting, line numbers, copy buttons, and diff annotations
  • šŸ”¤ Font Optimization — 66% smaller fonts via pyftsubset character extraction
  • šŸ–¼ļø Image Optimization — AVIF/WebP generation with lazy loading
  • šŸ“š Blog Series — Multi-part articles with navigation and progress tracking
  • šŸŽØ Dark/Light Theme — System-aware with smooth transitions
  • šŸ’¬ Comments — Giscus integration (GitHub Discussions powered)
  • šŸ“Š Analytics — Self-hosted Umami (privacy-first)
  • šŸ” SEO Ready — Sitemap, RSS feed, Open Graph, Twitter Cards

šŸ› ļø Tech Stack

Layer Technology
Framework SvelteKit 2 + Svelte 5 (runes)
Styling Tailwind CSS 4
Content Custom MDX processor (unified/rehype/shiki)
Deployment Docker + Nginx
CI/CD GitHub Actions + Komodo
Dev Environment Nix Flake

šŸš€ Quick Start

Prerequisites

  • Node.js 25+
  • pnpm 10+
  • Python 3 (for font optimization)
# Clone and enter the directory (direnv auto-loads the environment)
git clone https://github.com/antoniosarro/antoniosarro.dev.git
cd antoniosarro.dev

# Install dependencies
pnpm install

# Start development server
pnpm run dev

Manual Setup

# Install font tools
pip install fonttools brotli zopfli

# Install dependencies
pnpm install

# Development
pnpm run dev

# Production build (with optimizations)
pnpm run build:prod

šŸ“ Project Structure

ā”œā”€ā”€ blog/                 # MDX blog posts
ā”œā”€ā”€ assets/
│   ā”œā”€ā”€ fonts/           # Source fonts (pre-optimization)
│   └── images/          # Source images (pre-optimization)
ā”œā”€ā”€ scripts/
│   ā”œā”€ā”€ build/           # Font & image optimization
│   ā”œā”€ā”€ changelog/       # Auto-changelog generation
│   └── vite-plugins/    # Custom Vite plugins
ā”œā”€ā”€ src/
│   ā”œā”€ā”€ lib/
│   │   ā”œā”€ā”€ components/  # Svelte components
│   │   ā”œā”€ā”€ data/        # Static data (projects, socials, etc.)
│   │   ā”œā”€ā”€ mdx/         # MDX processor
│   │   ā”œā”€ā”€ services/    # Data fetching (GitHub, blog)
│   │   ā”œā”€ā”€ stores/      # Svelte stores
│   │   └── utils/       # Utility functions
│   └── routes/          # SvelteKit pages
└── static/              # Static assets (output)

šŸ”§ Available Commands

# Development
pnpm run dev              # Start dev server
pnpm run check            # TypeScript check
pnpm run lint             # ESLint
pnpm run format           # Prettier

# Build
pnpm run build            # Standard build
pnpm run build:prod       # Production build (with optimizations)
pnpm run preview          # Preview production build

# Optimization
pnpm run optimize:images  # Generate AVIF/WebP variants
pnpm run optimize:fonts   # Subset fonts to used characters

🐳 Docker

# Build and run
docker compose up -d

# Production deployment
docker compose -f docker-compose.prod.yaml up -d

šŸ“„ License

This project is open source. Feel free to steal ideas, but maybe give credit? šŸ˜‰


Built with šŸ–¤ and an unhealthy amount of ā˜• by Antonio Sarro

Top categories

Loading Svelte Themes