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
---
mdsvex
rehype-pretty-code
rehype-autolink-headings
remark-gfm
order
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: