A high-performance portfolio & blog built from scratch
Because using a template is like ordering pizza when you're a chef š
| 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 |
# 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
# Install font tools
pip install fonttools brotli zopfli
# Install dependencies
pnpm install
# Development
pnpm run dev
# Production build (with optimizations)
pnpm run build:prod
āāā 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)
# 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
# Build and run
docker compose up -d
# Production deployment
docker compose -f docker-compose.prod.yaml up -d
This project is open source. Feel free to steal ideas, but maybe give credit? š