A personal website built with SvelteKit, Tailwind CSS, and mdsvex. Features a portfolio of works, articles written in Markdown, and an about page. Deployed on Netlify.
Install / Activate the correct Node version and dependencies:
nvm use
pnpm install# preferred, if netlify-cli is installed
netlify dev
# otherwise use pnpm dev, however, it will not work properly
# because it cannot use Netlify Image CDN
pnpm devpnpm build
pnpm previewpnpm check
pnpm lint
pnpm test| Category | Technology |
|---|---|
| Framework | SvelteKit (Svelte 5) |
| Styling | Tailwind CSS v4 + @tailwindcss/typography |
| Markdown | mdsvex — renders .md/.svx files as Svelte components |
| Markdown plugins | remark-footnotes |
| CMS | Sveltia CMS (Git-based, GitHub backend) |
| Deployment | Netlify via @sveltejs/adapter-netlify (SSG + prerender) |
| Image CDN | Netlify Image CDN (requires netlify dev for local use) |
| Testing | Vitest (unit) + Playwright (e2e) |
| Linting | ESLint + Prettier (with prettier-plugin-svelte and prettier-plugin-tailwindcss) |
| Runtime | Node 22 (see .nvmrc) |
| Package manager | pnpm |
src/
├── lib/
│ ├── components/ # Reusable Svelte components (nav, footer, item, tag, img)
│ ├── markdown-layouts/ # Svelte layout wrappers for mdsvex content (article, work, links, default)
│ ├── attachments/ # Svelte action utilities (e.g. portal)
│ └── utils/ # Shared utility functions
└── routes/
├── +page.svelte # Home page
├── about/ # About page with Markdown content
├── articles/ # Article listing and [slug] detail pages (Markdown)
├── works/ # Works listing and [slug] detail pages (Markdown)
├── api/ # JSON endpoints for articles and works
├── sitemap.xml/ # Dynamic sitemap endpoint
├── config.md # Site-wide config (title, description, etc.)
└── links.md # Links page content
static/
├── admin/ # Sveltia CMS config and UI
└── uploads/ # Media uploaded via CMS
e2e/ # Playwright end-to-end tests