A static blog template based on SvelteKit; the build output is the build/ directory and can be published to a static hosting service
svelte-blog-template — Svelte Blog Template
By moonmoonio
A static blog template based on SvelteKit, with built-in tag aggregation and multilingual support, and articles written in mdsvex.
Explore the design
Compare the page layouts and mobile experience. Open any screenshot for a closer look.
Actual screenshot captured by the server browser.
All pages & views 2
Screenshots show visual appearance; interactive behavior may differ.
What stands out
A quick read of the recorded project description.
Articles are written in mdsvex and support front matter declaring title, tags, summary, publication date, update date, author, and contributors
Tags are automatically collected and aggregated from all articles, making it convenient to find related articles by tag
Built-in internationalization support; translation files are stored in directories by language, and the language list is managed by enums.ts and translations/index.ts
Articles are named by language (such as en.svx, es.svx), so the same content can be provided in multiple language versions
The site name, about page, social links, and footer copyright information all have corresponding configuration files that can be modified
Template Details
svelte-blog-template is a static blog template built with SvelteKit, positioned as a simple static blog site. It comes with tag functionality and internationalization support. Articles are written as mdsvex files and can be placed in files named by language (such as en.svx, es.svx), with front matter declaring fields such as title, tags, summary, publication date, update date, author, and contributors. Tags are automatically collected and aggregated from all articles, making it easy to find articles by tag.
The template centralizes multilingual content under src/lib/translations/, with one directory per language; available languages are defined by an enum in src/lib/enums.ts and registered in src/lib/translations/index.ts. The site name, about page, social links, and footer copyright information are modified through src/lib/translations/generic.json, src/lib/blog/about/, and src/lib/config/site.ts respectively.
The build process is: after npm install, run npm run dev for development, npm run build to generate a production version, npm run preview to preview, and finally publish the generated build/ directory to any static hosting service. The repository does not provide further specific information about theme styling, performance, or deployment platforms; before use, you need to verify the licenses of third-party assets such as demo images, fonts, and icons yourself.
Is it right for your project?
Use Cases
- Building a personal static blog written in Markdown-style files and organized by tags
- Needing the same blog to provide content in multiple languages and maintain translations for each language separately
- Deploying the generated static files to a static site hosting service of your choice
- Referencing the organization of multilingual translation files and article front matter in a SvelteKit project
Suitable For
- Developers familiar with SvelteKit and mdsvex who want to quickly start a static blog
- Bloggers who need tag aggregation and multilingual content organization
- Users who plan to choose their own static hosting service and handle third-party asset licensing themselves
Getting started & customization
Use these recorded setup notes alongside the repository instructions for your chosen version.
- 1
Install dependencies with npm install (or pnpm install, yarn), and start the development server with npm run dev
- 2
npm run build generates a production version, npm run preview previews it, and finally publish the build/ directory
- 3
In src/lib/translations/generic.json, replace "Test Site" with the actual site name
- 4
Articles are placed in directories named by slug under src/lib/blog/posts/, with filenames using language codes (such as en.svx)
- 5
Adding or removing languages requires updating src/lib/enums.ts and src/lib/translations/index.ts in sync, and maintaining the corresponding language directories
License & source material
Usage conditions & limitations
Free to use · keep license noticeThis entry covers the free MIT version in a public repository; the free scope is the code of that version and does not mean that external services or third-party assets are free.
Must comply with when using
- When using, modifying, or distributing the code, retain the original author's copyright notice and the complete MIT license.
- Free use, modification, and commercial use are permitted, as is distribution of the code; when distributing, the copyright and license notice must still be included.
- The code is provided as is, and the author does not promise warranties or assume responsibility for use.
Additional costs & items to verify
- Social icons depend on external icon libraries (Flowbite Svelte and svelte-icons-pack), and by default only Simple Icons is supported; using these icons requires complying with the licenses of the corresponding third-party icon sets, and the template itself does not provide authorization for icon assets.
- The article author field structure depends on the third-party npm package feed; using RSS-related functionality requires installing and complying with that dependency's license.
- Demo images, fonts, icons, and other third-party assets need to be checked against their respective licenses and cannot be judged solely by the code's MIT license.
- External services such as domains, hosting, databases, payments, or AI may incur additional charges.
View Original Text Basis
Permission is hereby granted, free of charge
Original License Text
The available icons for the social media icons can be found in https://flowbite-svelte.com/icons/solid-icons, as well as in https://leshak.github.io/svelte-icons-pack/#/pack/si (note that only Simple Icons are supported by default).
Original README
https://github.com/moonmoonio/svelte-blog-template/blob/main/LICENSEhttps://github.com/moonmoonio/svelte-blog-template/blob/main/README.mdThe `Author` class referred above is taken from [`feed`](https://www.npmjs.com/package/feed) to simplify the RSS feed creation.
Original README
Based on the full MIT license and the repository README · 2026-09-30. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.
Project checks & description sources
Template Information
- Source platforms
- GitHub
- Documentation and maintenance reference score
- More documented · 83 / 100
- Technologies
- Svelte
- Website type
- Blog
How this score is calculated
Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.
What to verify for this project
- Repository update recorded
- 2026-07-14
- Screenshot last checked
- 2026-09-30
A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.
The catalog identifies Svelte as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.
Use a selection guide →How this description was prepared
AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.
Automatically checked against source and license rules; no manual editorial review.
Inspect the recorded source material
SHA-256: aeb28ea5ce9239c42dbae9c00d9aec1b474894b3af830922515225152347b623
2026-09-30T01:10:11.708Z
Source file / repository# svelte-blog-template `svelte-blog-template` is a template for a simple static blog site. It included tagging functionality and internationalization support. ## Developing Install dependencies with `npm install` (or `pnpm install` or `yarn`) and start the development server: ```bash npm run dev # or start the server and open the app in a new browser tab npm run dev -- --open ``` ## Building To create a production version of your app: ```bash npm run build ``` To preview the production build, use `npm run preview`. ## Publishing Publish the generated `build/` directory to your static site hosting service of preference. ## Making it your own ### Set up a website name Modify `src/lib/translations/generic.json` and replace `"Test Site"` with your own website name. ### Update the about me page Modify the files contained in `src/lib/blog/about/` (you may delete the translations for any language you do not wish to use). This project uses mdsvex which has support for front matter in its files, so make sure to update those fields too. ### Adding blog posts Add any new blog post to its own directory (which will be used as the post's slug) under `src/lib/blog/posts/`. Name your post file with the language it's written in. E.g., en.svx for english posts, and es.svx for posts written in spanish. The available front matter fields for blog posts are the following: ``` title: string; tags?: string[]; // Optional array of tags associated with this post. summary?: string; // Optional summary of the blog post, displayed in the list of all blog posts. publishDate: string | Date; // I tend to write them in the YYYY-MM-DD format. updatedDate?: string | Date; // Was the post updated after its original publish date? If so, update it here! authors?: Author[]; // Optional list of authors specific to this blog post contributors?: Author[]; // Optioan list of contributos specific to this blog post ``` The `Author` class referred above is taken from [`feed`](https://www.npmjs.com/package/feed) to simplify the RSS feed creation. Its fields are: ``` name?: string; email?: string; link?: string; avatar?: string; ``` ### Tags Tags are automatically taken from all blog posts and put in a table to easily find posts that share tags. ### Adding or removing locales Locale information is mostly contained within `src/lib/translations/`. - Each language has its own directory containing all associated translation files for it under `src/lib/translations/[langugage]`. - An enum containing all available locales is defined in `src/lib/enums.ts`. Update it to add or remove languages. - Translations are registered in `src/lib/translations/index.ts`, so make sure to update that file to register or remove languages. - I tried to keep translations of individual components in separate files, so the contents of `src/lib/translations/[langugage]` are translation files for each UI component of the site. ### Site config file The file located at `src/lib/config/site.ts` sets up links to social media and it declares the copyright owner specified in the site's footer. The available icons for the social media icons can be found in https://flowbite-svelte.com/icons/solid-icons, as well as in https://leshak.github.io/svelte-icons-pack/#/pack/si (note that only Simple Icons are supported by default). ### Home page I suggest you update the home page to make it your own thing :)
Explore similar templates
Compare previews and descriptions within the same stack and category.

CMSaasStarter
CMSaasStarter is an MIT-licensed SaaS starter template built with SvelteKit, TailwindCSS, DaisyUI, and Supabase, with Stripe Checkout and Stripe Portal for payments.
Svelte · Admin dashboard

sveltepress
Sveltepress is a SvelteKit-based static site generator for documentation and blogs, with Markdown that can use Svelte 5 Runes, components, and interactive islands.
Svelte · Tool Site

sveltekit-blog-template
A SvelteKit blog template that uses mdsvex for Markdown content and Tailwind for styling, with a theme referencing Tailwind's Spotlight blog template.
Svelte · Blog

sveltekit-mdsvex-blog
A minimal blog template built with SvelteKit and MDsveX, written in TypeScript. It supports writing articles in Markdown with embedded Svelte components, recognizes .svelte.md, .md, and .svx files, and is preconfigured with @sveltejs/adapter-static for static hosting deployment.
Svelte · Blog

tablog-svelte
A minimalist SvelteKit blog theme that generates all content from Markdown files in /content via mdsvex, with site configuration centralized in /src/config.js. Entries with a date attribute become posts, those without become static pages, and draft: true entries are inaccessible.
Svelte · Blog

sveltekit-mdsvex-blog-template
A SvelteKit and MDsveX blog starter for Markdown writing with embedded Svelte components, Tailwind CSS typography, tags, dark mode, SEO metadata, and Cloudflare Workers deployment configuration. Requires Node.js 22.12+ and pnpm 11.17.0; third-party demo assets need separate license verification.
Svelte · Portfolio
