(Still in Development — your support is appreciated!)
This SveltyCMS headless CMS provides a powerful backend based on a modern SvelteKit 2 / Svelte 5 framework. Being designed to be database agnostic, we fully support MongoDB, PostgreSQL, SQLite, and MariaDB/MySQL (via Drizzle ORM).
All widget fields support localization, validation using Valibot, and access control.
System localization uses Inlang Paraglide JS, a lightweight, type-safe i18n library. English is the default; additional languages are bundled and can be extended.
We use the latest tailwindcss v4 and a skeleton UI toolkit v4, so the CMS can be quickly optimized to your personal needs.
Backend data is available via REST API or GraphQL Yoga for fast, flexible frontends.
| Feature | Status | Notes |
|---|---|---|
| Collection Builder | ✅ | GUI and code-based definitions |
| Typed Widget System | ✅ | Localization, validation, access control |
| Multi-language (Paraglide) | ✅ | Type-safe i18n out of the box |
| REST API | ✅ | CRUD and configuration endpoints |
| GraphQL API (Yoga) | ✅ | High-performance schema |
| Database Resilience | ✅ | Retries, self-healing reconnection, diagnostics, log download |
| Email Templating | ✅ | Svelte Email + SMTP |
| Roles & Permissions | ✅ | Database-backed access control |
| MariaDB / MySQL | ✅ | SQL support via Drizzle ORM |
| PostgreSQL | ✅ | Full production support via Drizzle ORM |
| SQLite | ✅ | Lightweight file-based SQL support |
Get up and running fast:
git clone https://github.com/SveltyCMS/SveltyCMS.git
cd SveltyCMS
bun install # or npm/pnpm
bun run dev # or npm run dev / pnpm run dev
Prefer a full walkthrough? See: ./docs/getting-started.mdx
To clone our repository you need to be able to use Git.
git clone https://github.com/SveltyCMS/SveltyCMS.git
cd SveltyCMS
Install LATEST STABLE Node.js (>=24) to get started. We recommend using Bun for the best experience (3-4x faster than npm/pnpm). Then choose your preferred package manager:
# Install all dependencies
npm install
# Development (CLI installer launches automatically if needed)
npm run dev
# Build for production
npm run build
# Preview production build
npm run preview
# Install pnpm if you haven't already
npm install -g pnpm
# Install all dependencies
pnpm install
# Development (CLI installer launches automatically if needed)
pnpm run dev
# Build for production
pnpm run build
# Preview production build
pnpm run preview
# Install bun if you haven't already
curl -fsSL https://bun.sh/install | bash
# Install all dependencies
bun install
# Development (CLI installer launches automatically if needed)
bun run dev
# Build for production
bun run build
# Preview production build
bun run preview
When starting the dev server without configuration, the guided installer launches automatically:
vite.config.tsStart with:
bun run dev # or npm run dev / pnpm run dev
See our package.json for more information about development, build, preview, fast Biome formatting, hybrid Biome/ESLint linting & testing commands.
localhost:5173localhost:4173We want to keep your data Private and Secure.
Our extensive Authentication allows us to stay flexible for the future and adapt to changing security needs.
You can log in with email/password or Google OAuth. Role- and field-based access control lets you define precisely who can view, edit, or delete content. Sensitive data is masked in logs; admin-only endpoints protect operational features.
If you require a different look, use the skeleton theme generator and modify the svelty-cms-theme.ts to your needs
|
We use Paraglide JS, the best i18n library together with inlang ecosystem for first class System Translations with full typescript support. Our System Translations are available at: inlang and can easily be extended. If a language has not yet been defined, reach out to us, so that you can help extend the System Localization. |
SveltyCMS is designed with inclusivity at its core, aiming for WCAG 2.2 AA and ATAG 2.0 compliance.
Great Experience to designing user-friendly and intuitive interfaces for managing content. Full Typescript support to display all available widgets, options to create fully custom data structures.
Build and send emails using Svelty Email and TypeScript.
SveltyCMS is built with modern optimization techniques resulting in a compact bundle compared to traditional CMS platforms:
| CMS Platform | Bundle Size (gzipped) | Bundle Size (Brotli) | Technology Stack |
|---|---|---|---|
| SveltyCMS | 604 KB | 508 KB ⚡ | SvelteKit 5 + Vite |
| WordPress Admin | ~800 KB | ~675 KB | jQuery + PHP |
| Drupal Admin | ~1.1 MB | ~930 KB | jQuery + Drupal |
| Payload CMS | ~2.5 MB | ~850 KB | React + Next.js |
| Directus | ~1.5 MB | ~750 KB | Vue.js |
What this means:
Comprehensive documentation is available to help you get started:
REST (fetch 5 posts):
curl -H "Authorization: Bearer <token>" \
"http://localhost:5173/api/collections/posts?limit=5"
GraphQL (posts with author):
query {
posts(limit: 5) {
id
title
slug
author {
name
}
}
}
SveltyCMS is licensed under the Business Source License 1.1 (BSL 1.1) — Fair Source software that balances openness with sustainability.
If your organization's Total Finances (revenue, funding, assets) exceed $1,000,000 USD, you must purchase a commercial license to use SveltyCMS in production.
📧 Email: info@sveltycms.com
For more details, see the full LICENSE file.
Contact us if you're struggling with installation or other issues:
For detailed information on our Git workflow, branching strategy, and commit conventions, see our Git Workflow & Automated Releases guide.
We use semantic versioning to manage our releases. This means that our version numbers follow a specific format: MAJOR.MINOR.PATCH.
MAJOR version changes when we make incompatible API changesMINOR version changes when we add functionality in a backwards-compatible mannerPATCH version changes when we make backwards-compatible bug fixesWhen submitting pull requests, please make sure your commit messages follow the Conventional Commits specification. This will help us automatically generate changelogs and release notes.
Please also read our Code of Conduct before submitting Pull Requests.
If your PR makes a change that should be noted in one or more packages' changelogs, generate a changeset by running pnpm changeset and following the prompts. Changesets that add features should be minor and those that fix bugs should be patch.
Before submitting Pull Requests, ensure your changes pass all checks by running:
bun run lint && bun run check && bun run test
This runs the linter (ESLint), type checker (Svelte-Check), and the full unit test suite (Bun Test) exactly as the GitHub Actions CI pipeline does.
Please prefix changeset messages with feat:, fix:, or chore:.
Thank you for helping us maintain a consistent and predictable release process! ❤️
We welcome all kinds of contributions! Please see our CONTRIBUTING.md for details on how to get started.
If you find our project useful and would like to support its development, you can become a sponsor! Your sponsorship will help us cover the costs of maintaining the project and allow us to dedicate more time to its development.
There are several ways you can sponsor us:
Thank you for your support! 🙏
To all our contributors — without you, SveltyCMS would never have been possible.
If you like what we're doing, give us a star and share our SveltyCMS project with others!