A modern article server built with SvelteKit, designed for hosting articles with rich media support. Features MDX processing, syntax highlighting, and responsive design.
This project is a full-featured article server that supports:
Articles are written in MDX format and stored in src/articles/. Each article requires:
---
title: "Article Title"
description: "Brief description"
date: "2024-03-20"
tags: ["web", "svelte"]
banner: "/path/to/banner.jpg"
order: 1
published: true
---
mdsvexrehype-pretty-coderehype-autolink-headingsremark-gfmorder fieldpublished flagstatic/
[article-slug]/
media/
images/
gallery/
[gallery-name]/
image1.jpg
image2.png
videos/
video1.mp4
bigger-picture)vidstack)/api/gallery/[article]/[gallery] - Get images for specific article gallery/api/gallery/[gallery] - Get images for standalone galleryCustom Player (via vidstack)
<Video src="/path/to/video.mp4" />
YouTube Integration
<YouTube id="video-id" />
Vimeo Integration
<Vimeo id="video-id" />
Content Processing:
mdsvex: MDX processingrehype-pretty-code: Syntax highlightingrehype-autolink-headings: Header linkingrehype-slug: Header slug generationremark-gfm: GitHub Flavored Markdownunist-util-visit: AST traversalUI Components:
bigger-picture: Lightbox for imagesvidstack: Video playerclass-variance-authority: Component variantstailwind-merge & tailwind-variants: Styling utilitiesclsx: Class name utilitiesAnalytics:
@loglib/tracker: Analytics trackingPrerequisites
node >= 18.0.0
pnpm >= 10.0.0
Installation
# Clone the repository
git clone [repository-url]
cd svelte-articles
# Install dependencies
pnpm install
Development
# Start development server
pnpm dev
# Type checking
pnpm check
pnpm check:watch
# Linting and formatting
pnpm lint
pnpm format
# Build for production
pnpm build
# Preview production build
pnpm preview
svelte-articles/
├── src/
│ ├── articles/ # MDX article content
│ ├── lib/
│ │ ├── components/ # Reusable components
│ │ └── types.ts # TypeScript definitions
│ └── routes/
│ ├── api/ # API endpoints
│ └── articles/[slug]/ # Article pages
├── static/ # Static assets
│ └── [article-slug]/ # Article media
└── [config files] # Project configuration
svelte.config.js: SvelteKit and MDX configurationtailwind.config.js: Tailwind CSS settingstsconfig.json: TypeScript configurationvite.config.ts: Vite bundler settings.prettierrc: Code formatting rulesThe project uses @sveltejs/adapter-auto for automatic platform detection. Deploy to: