A modern, obviously vibe-coded, dark-mode portfolio/resume website template built with SvelteKit. Perfect for software engineers, full-stack developers, DevOps engineers and other technical professionals who want a clean, professional online presence.
Clone this template
git clone [email protected]:Kxpi/yadr.git my-portfolio
cd my-portfolio
Install dependencies
npm install
Customize your data
src/lib/config.ts - Site-wide settingssrc/lib/data/profile.ts - Your experience, skills, etc.static/profile.jpg with your photoRun development server
npm run dev
Open http://localhost:5173 to see your site.
Build for production
npm run build
Static files will be generated in the build/ directory.
src/lib/config.ts)export const siteConfig = {
title: "Your Name | Software Engineer",
description: "Your professional summary",
url: "https://yourname.dev",
github: "https://github.com/your-username",
linkedin: "https://linkedin.com/in/yourusername",
email: "[email protected]",
formspreeId: "YOUR_FORM_ID" // Get from https://formspree.io
};
src/lib/data/profile.ts)Update these sections:
profile - Name, title, tagline, summaryskills - Your tech stack (organized by category)experience - Work historyhighlights - Top 4 achievementseducation - Degree infocertifications - Optional certifications listReplace static/profile.jpg with your own photo.
Recommended specifications:
Quick optimization guide:
static/profile.jpgEdit the categories in src/lib/components/sections/Skills.svelte:
const categories = [
{ key: "frontend", label: "Frontend" },
{ key: "backend", label: "Backend" },
{ key: "databases", label: "Databases" },
{ key: "tools", label: "Tools & DevOps" }
];
The project uses ESLint and Prettier for code quality and formatting:
# Check for linting errors
npm run lint
# Auto-fix linting errors
npm run lint:fix
# Check code formatting
npm run format:check
# Auto-format all files
npm run format
# Type check with svelte-check
npm run check
The project uses Husky and lint-staged to automatically run checks on staged files before each commit:
.js, .ts, .svelte filesSetup:
npm install # Installs Husky hooks automatically
Manual checks:
If you want to run all checks manually:
npm run lint && npm run format && npm run check
Skip pre-commit (not recommended):
git commit --no-verify -m "message"
All checks run automatically in GitHub Actions:
.github/workflows/ci.yml):.github/workflows/deploy-gh-pages.yml):The template uses Tailwind CSS v4 with shadcn-svelte's zinc theme. To change colors:
Edit src/app.css and modify the CSS variables:
.dark {
--background: oklch(...);
--primary: oklch(...);
/* etc */
}
All sections are in src/lib/components/sections/. To remove a section:
Highlights.svelte)src/routes/+page.svelteNavigation.svelteThe template uses Lucide Icons throughout. To change icons:
import Rocket from "lucide-svelte/icons/rocket";
<Rocket class="h-6 w-6" />
Example - Changing Highlights Icons:
Edit src/lib/components/sections/Highlights.svelte:
// Replace these imports with your preferred icons
import Code from "lucide-svelte/icons/code";
import Layers from "lucide-svelte/icons/layers";
import Zap from "lucide-svelte/icons/zap";
import Users from "lucide-svelte/icons/users";
const icons = [Code, Layers, Zap, Users];
The icons array matches the order of highlights in profile.ts, so the first icon corresponds to the first highlight, and so on.
Replace static/favicon.svg with your own icon.
xabcd123)formspreeId in src/lib/config.tsFree tier includes 50 submissions/month.
Customize and push to GitHub
Deploy to Cloudflare Pages
npm run buildbuildAdd Custom Domain (Optional)
yourname.dev)This project is also configured to automatically deploy to GitHub Pages when you push to the main branch.
Customize and push to GitHub
Enable GitHub Pages
gh-pages / rootAccess your site
gh-pages branchhttps://user.github.io/yadr/Both work great with SvelteKit. The build settings are the same:
npm run buildbuildMIT License - feel free to use this template for your portfolio!
Found a bug or have a suggestion? Feel free to open an issue or submit a PR.
The template is pre-configured for excellent Lighthouse scores. Additional optimizations:
Critical: Optimize your profile photo for best performance:
fetchpriority="high" for faster LCPAlready optimized:
precompress: true)inlineStyleThreshold: 1024)Cloudflare Pages (recommended):
GitHub Pages:
build directory is specified (not dist)NODE_VERSION=18 environment variablesrc/lib/config.tsstatic/ folder/filename.jpg (leading slash)