Repository files navigation

What is SvelteCMS?

SvelteCMS is an attempt at creating a new kind of Content Management System that builds fast SvelteKit websites with content models from a configurable CMS but doesn't require running a server or subscribing to a content SAAS. SvelteCMS...

  • is software, not a product or service.
  • runs as part of the site, not on a separate system.
  • builds performant web apps, with minimal code on content pages, SSR and prerendering.1
  • builds sites that work without Javascript, so no more blank white screens.
  • is database agnostic: store content in any server, repository, or database provider2.
  • supports data portability: mix, match, and migrate content between storage solutions3.
  • [] supports community interaction: manage user accounts from install4.
  • supports serverless architecture: deploy CMS endpoints to any serverless provider5.
  • supports static site generation: build locally and deploy to any web host.
  • works in the browser: go truly "serverless" with Web Containers or isomorphic git.
  • supports complex content models: conditional, nested, and calculated fields.
  • manages the full content cycle: entry, storage, retrieval and display.
  • enables code-free site building: go from data architecture to display with no code.
  • is extensible: extend CMS functionality with components, plugins and hooks.
  • is free for any number of sites, users, content types, plugins, etc.

Installation

You can create a new SvelteCMS project, including the SvelteKit setup, using npm:


> npm create sveltecms@latest
> npm run dev

Optional: Use TailwindCSS

SvelteCMS works very well with TailwindCSS (and likely with similar utility css frameworks like WindyCSS) for display of elements and ad-hoc styles in content. TailwindCSS can parse classes in the SvelteCMS config file and in locally stored content, but it needs to be told where to look for the files and how to recognize the classes. Luckily SvelteCMS comes with the proper functions already in the tailwind.config.cjs file. However, you still need to install and configure Tailwind and PostCSS:

  • Install Tailwind (and any plugins):

    You can either do this manually or with a svelte-add command, e.g. npx svelte-add@latest tailwindcss --tailwindcss-typography

  • Afterward, don't forget to run npm install!

Optional: Setup YAML for configuration

If you want to use YAML instead of JSON for storing SvelteCMS configuration, you will want to install and configure @rollup/plugin-yaml.

  • Install the plugin:
    npm install @rollup/plugin-yaml

  • Configure Vite to use the plugin in vite.config.js:

    importyamlfrom'@rollup/plugin-yaml'
    ...
    constconfig={plugins: [
    ...
    yaml(),]};
  • Configure SvelteCMS to use the correct file in src/lib/cms.ts:
    import conf from './sveltecms.config.json'
    import conf from './sveltecms.config.yml'

  • Add type for .yml files in src/app.d.ts \

    declareglobal{// other stuff...module"*.yml"{constvalue: any;exportdefaultvalue;}}

Usage

You should have a new SvelteKit project with SvelteCMS included You will find SvelteCMS-specific files in the src/routes/(cms) folder.

For local development, you can start SvelteKit as you normally would:

npm run dev

...Why?

What is this? A center for ANTS!? It needs to be at least ... three times bigger!
- Derek Zoolander

SvelteCMS was made to demonstrate and jump-start my vision for what a Content Management System could be in 2023. I want to build fast modern websites with content models from a configurable CMS, but I don't want to run a server or subscribe to a paid SAAS API. Hopefully this helps to move things forward.

Footnotes

  1. Server-side rendering and prerendering work, and it is possible to produce static pages without javascript, but for the pages rendered client-side there is a lot of optimization still to be done.

  2. Requires plugins.

  3. Requires plugins.

  4. Requires plugins and a new bit of API.

  5. Theoretically any serverless host that supports SvelteKit should work with SvelteCMS.

About

A content manager built with sveltekit, for sveltekit projects. Sensible and extensible, declarative config.

Resources

Stars

13 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

What is SvelteCMS?

SvelteCMS is an attempt at creating a new kind of Content Management System that builds fast SvelteKit websites with content models from a configurable CMS but doesn't require running a server or subscribing to a content SAAS. SvelteCMS...

  • is software, not a product or service.
  • runs as part of the site, not on a separate system.
  • builds performant web apps, with minimal code on content pages, SSR and prerendering.1
  • builds sites that work without Javascript, so no more blank white screens.
  • is database agnostic: store content in any server, repository, or database provider2.
  • supports data portability: mix, match, and migrate content between storage solutions3.
  • [] supports community interaction: manage user accounts from install4.
  • supports serverless architecture: deploy CMS endpoints to any serverless provider5.
  • supports static site generation: build locally and deploy to any web host.
  • works in the browser: go truly "serverless" with Web Containers or isomorphic git.
  • supports complex content models: conditional, nested, and calculated fields.
  • manages the full content cycle: entry, storage, retrieval and display.
  • enables code-free site building: go from data architecture to display with no code.
  • is extensible: extend CMS functionality with components, plugins and hooks.
  • is free for any number of sites, users, content types, plugins, etc.

Installation

You can create a new SvelteCMS project, including the SvelteKit setup, using npm:


> npm create sveltecms@latest
> npm run dev

Optional: Use TailwindCSS

SvelteCMS works very well with TailwindCSS (and likely with similar utility css frameworks like WindyCSS) for display of elements and ad-hoc styles in content. TailwindCSS can parse classes in the SvelteCMS config file and in locally stored content, but it needs to be told where to look for the files and how to recognize the classes. Luckily SvelteCMS comes with the proper functions already in the tailwind.config.cjs file. However, you still need to install and configure Tailwind and PostCSS:

  • Install Tailwind (and any plugins):

    You can either do this manually or with a svelte-add command, e.g. npx svelte-add@latest tailwindcss --tailwindcss-typography

  • Afterward, don't forget to run npm install!

Optional: Setup YAML for configuration

If you want to use YAML instead of JSON for storing SvelteCMS configuration, you will want to install and configure @rollup/plugin-yaml.

  • Install the plugin:
    npm install @rollup/plugin-yaml

  • Configure Vite to use the plugin in vite.config.js:

    importyamlfrom'@rollup/plugin-yaml'
    ...
    constconfig={plugins: [
    ...
    yaml(),]};
  • Configure SvelteCMS to use the correct file in src/lib/cms.ts:
    import conf from './sveltecms.config.json'
    import conf from './sveltecms.config.yml'

  • Add type for .yml files in src/app.d.ts \

    declareglobal{// other stuff...module"*.yml"{constvalue: any;exportdefaultvalue;}}

Usage

You should have a new SvelteKit project with SvelteCMS included You will find SvelteCMS-specific files in the src/routes/(cms) folder.

For local development, you can start SvelteKit as you normally would:

npm run dev

...Why?

What is this? A center for ANTS!? It needs to be at least ... three times bigger!
- Derek Zoolander

SvelteCMS was made to demonstrate and jump-start my vision for what a Content Management System could be in 2023. I want to build fast modern websites with content models from a configurable CMS, but I don't want to run a server or subscribe to a paid SAAS API. Hopefully this helps to move things forward.

Footnotes

  1. Server-side rendering and prerendering work, and it is possible to produce static pages without javascript, but for the pages rendered client-side there is a lot of optimization still to be done.

  2. Requires plugins.

  3. Requires plugins.

  4. Requires plugins and a new bit of API.

  5. Theoretically any serverless host that supports SvelteKit should work with SvelteCMS.

About

A content manager built with sveltekit, for sveltekit projects. Sensible and extensible, declarative config.

Resources

Stars

13 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

What is SvelteCMS?

SvelteCMS is an attempt at creating a new kind of Content Management System that builds fast SvelteKit websites with content models from a configurable CMS but doesn't require running a server or subscribing to a content SAAS. SvelteCMS...

  • is software, not a product or service.
  • runs as part of the site, not on a separate system.
  • builds performant web apps, with minimal code on content pages, SSR and prerendering.1
  • builds sites that work without Javascript, so no more blank white screens.
  • is database agnostic: store content in any server, repository, or database provider2.
  • supports data portability: mix, match, and migrate content between storage solutions3.
  • [] supports community interaction: manage user accounts from install4.
  • supports serverless architecture: deploy CMS endpoints to any serverless provider5.
  • supports static site generation: build locally and deploy to any web host.
  • works in the browser: go truly "serverless" with Web Containers or isomorphic git.
  • supports complex content models: conditional, nested, and calculated fields.
  • manages the full content cycle: entry, storage, retrieval and display.
  • enables code-free site building: go from data architecture to display with no code.
  • is extensible: extend CMS functionality with components, plugins and hooks.
  • is free for any number of sites, users, content types, plugins, etc.

Installation

You can create a new SvelteCMS project, including the SvelteKit setup, using npm:


> npm create sveltecms@latest
> npm run dev

Optional: Use TailwindCSS

SvelteCMS works very well with TailwindCSS (and likely with similar utility css frameworks like WindyCSS) for display of elements and ad-hoc styles in content. TailwindCSS can parse classes in the SvelteCMS config file and in locally stored content, but it needs to be told where to look for the files and how to recognize the classes. Luckily SvelteCMS comes with the proper functions already in the tailwind.config.cjs file. However, you still need to install and configure Tailwind and PostCSS:

  • Install Tailwind (and any plugins):

    You can either do this manually or with a svelte-add command, e.g. npx svelte-add@latest tailwindcss --tailwindcss-typography

  • Afterward, don't forget to run npm install!

Optional: Setup YAML for configuration

If you want to use YAML instead of JSON for storing SvelteCMS configuration, you will want to install and configure @rollup/plugin-yaml.

  • Install the plugin:
    npm install @rollup/plugin-yaml

  • Configure Vite to use the plugin in vite.config.js:

    importyamlfrom'@rollup/plugin-yaml'
    ...
    constconfig={plugins: [
    ...
    yaml(),]};
  • Configure SvelteCMS to use the correct file in src/lib/cms.ts:
    import conf from './sveltecms.config.json'
    import conf from './sveltecms.config.yml'

  • Add type for .yml files in src/app.d.ts \

    declareglobal{// other stuff...module"*.yml"{constvalue: any;exportdefaultvalue;}}

Usage

You should have a new SvelteKit project with SvelteCMS included You will find SvelteCMS-specific files in the src/routes/(cms) folder.

For local development, you can start SvelteKit as you normally would:

npm run dev

...Why?

What is this? A center for ANTS!? It needs to be at least ... three times bigger!
- Derek Zoolander

SvelteCMS was made to demonstrate and jump-start my vision for what a Content Management System could be in 2023. I want to build fast modern websites with content models from a configurable CMS, but I don't want to run a server or subscribe to a paid SAAS API. Hopefully this helps to move things forward.

Footnotes

  1. Server-side rendering and prerendering work, and it is possible to produce static pages without javascript, but for the pages rendered client-side there is a lot of optimization still to be done.

  2. Requires plugins.

  3. Requires plugins.

  4. Requires plugins and a new bit of API.

  5. Theoretically any serverless host that supports SvelteKit should work with SvelteCMS.

About

A content manager built with sveltekit, for sveltekit projects. Sensible and extensible, declarative config.

Resources

Stars

13 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

What is SvelteCMS?

SvelteCMS is an attempt at creating a new kind of Content Management System that builds fast SvelteKit websites with content models from a configurable CMS but doesn't require running a server or subscribing to a content SAAS. SvelteCMS...

  • is software, not a product or service.
  • runs as part of the site, not on a separate system.
  • builds performant web apps, with minimal code on content pages, SSR and prerendering.1
  • builds sites that work without Javascript, so no more blank white screens.
  • is database agnostic: store content in any server, repository, or database provider2.
  • supports data portability: mix, match, and migrate content between storage solutions3.
  • [] supports community interaction: manage user accounts from install4.
  • supports serverless architecture: deploy CMS endpoints to any serverless provider5.
  • supports static site generation: build locally and deploy to any web host.
  • works in the browser: go truly "serverless" with Web Containers or isomorphic git.
  • supports complex content models: conditional, nested, and calculated fields.
  • manages the full content cycle: entry, storage, retrieval and display.
  • enables code-free site building: go from data architecture to display with no code.
  • is extensible: extend CMS functionality with components, plugins and hooks.
  • is free for any number of sites, users, content types, plugins, etc.

Installation

You can create a new SvelteCMS project, including the SvelteKit setup, using npm:


> npm create sveltecms@latest
> npm run dev

Optional: Use TailwindCSS

SvelteCMS works very well with TailwindCSS (and likely with similar utility css frameworks like WindyCSS) for display of elements and ad-hoc styles in content. TailwindCSS can parse classes in the SvelteCMS config file and in locally stored content, but it needs to be told where to look for the files and how to recognize the classes. Luckily SvelteCMS comes with the proper functions already in the tailwind.config.cjs file. However, you still need to install and configure Tailwind and PostCSS:

  • Install Tailwind (and any plugins):

    You can either do this manually or with a svelte-add command, e.g. npx svelte-add@latest tailwindcss --tailwindcss-typography

  • Afterward, don't forget to run npm install!

Optional: Setup YAML for configuration

If you want to use YAML instead of JSON for storing SvelteCMS configuration, you will want to install and configure @rollup/plugin-yaml.

  • Install the plugin:
    npm install @rollup/plugin-yaml

  • Configure Vite to use the plugin in vite.config.js:

    importyamlfrom'@rollup/plugin-yaml'
    ...
    constconfig={plugins: [
    ...
    yaml(),]};
  • Configure SvelteCMS to use the correct file in src/lib/cms.ts:
    import conf from './sveltecms.config.json'
    import conf from './sveltecms.config.yml'

  • Add type for .yml files in src/app.d.ts \

    declareglobal{// other stuff...module"*.yml"{constvalue: any;exportdefaultvalue;}}

Usage

You should have a new SvelteKit project with SvelteCMS included You will find SvelteCMS-specific files in the src/routes/(cms) folder.

For local development, you can start SvelteKit as you normally would:

npm run dev

...Why?

What is this? A center for ANTS!? It needs to be at least ... three times bigger!
- Derek Zoolander

SvelteCMS was made to demonstrate and jump-start my vision for what a Content Management System could be in 2023. I want to build fast modern websites with content models from a configurable CMS, but I don't want to run a server or subscribe to a paid SAAS API. Hopefully this helps to move things forward.

Footnotes

  1. Server-side rendering and prerendering work, and it is possible to produce static pages without javascript, but for the pages rendered client-side there is a lot of optimization still to be done.

  2. Requires plugins.

  3. Requires plugins.

  4. Requires plugins and a new bit of API.

  5. Theoretically any serverless host that supports SvelteKit should work with SvelteCMS.

About

A content manager built with sveltekit, for sveltekit projects. Sensible and extensible, declarative config.

Resources

Stars

13 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

What is SvelteCMS?

SvelteCMS is an attempt at creating a new kind of Content Management System that builds fast SvelteKit websites with content models from a configurable CMS but doesn't require running a server or subscribing to a content SAAS. SvelteCMS...

  • is software, not a product or service.
  • runs as part of the site, not on a separate system.
  • builds performant web apps, with minimal code on content pages, SSR and prerendering.1
  • builds sites that work without Javascript, so no more blank white screens.
  • is database agnostic: store content in any server, repository, or database provider2.
  • supports data portability: mix, match, and migrate content between storage solutions3.
  • [] supports community interaction: manage user accounts from install4.
  • supports serverless architecture: deploy CMS endpoints to any serverless provider5.
  • supports static site generation: build locally and deploy to any web host.
  • works in the browser: go truly "serverless" with Web Containers or isomorphic git.
  • supports complex content models: conditional, nested, and calculated fields.
  • manages the full content cycle: entry, storage, retrieval and display.
  • enables code-free site building: go from data architecture to display with no code.
  • is extensible: extend CMS functionality with components, plugins and hooks.
  • is free for any number of sites, users, content types, plugins, etc.

Installation

You can create a new SvelteCMS project, including the SvelteKit setup, using npm:


> npm create sveltecms@latest
> npm run dev

Optional: Use TailwindCSS

SvelteCMS works very well with TailwindCSS (and likely with similar utility css frameworks like WindyCSS) for display of elements and ad-hoc styles in content. TailwindCSS can parse classes in the SvelteCMS config file and in locally stored content, but it needs to be told where to look for the files and how to recognize the classes. Luckily SvelteCMS comes with the proper functions already in the tailwind.config.cjs file. However, you still need to install and configure Tailwind and PostCSS:

  • Install Tailwind (and any plugins):

    You can either do this manually or with a svelte-add command, e.g. npx svelte-add@latest tailwindcss --tailwindcss-typography

  • Afterward, don't forget to run npm install!

Optional: Setup YAML for configuration

If you want to use YAML instead of JSON for storing SvelteCMS configuration, you will want to install and configure @rollup/plugin-yaml.

  • Install the plugin:
    npm install @rollup/plugin-yaml

  • Configure Vite to use the plugin in vite.config.js:

    importyamlfrom'@rollup/plugin-yaml'
    ...
    constconfig={plugins: [
    ...
    yaml(),]};
  • Configure SvelteCMS to use the correct file in src/lib/cms.ts:
    import conf from './sveltecms.config.json'
    import conf from './sveltecms.config.yml'

  • Add type for .yml files in src/app.d.ts \

    declareglobal{// other stuff...module"*.yml"{constvalue: any;exportdefaultvalue;}}

Usage

You should have a new SvelteKit project with SvelteCMS included You will find SvelteCMS-specific files in the src/routes/(cms) folder.

For local development, you can start SvelteKit as you normally would:

npm run dev

...Why?

What is this? A center for ANTS!? It needs to be at least ... three times bigger!
- Derek Zoolander

SvelteCMS was made to demonstrate and jump-start my vision for what a Content Management System could be in 2023. I want to build fast modern websites with content models from a configurable CMS, but I don't want to run a server or subscribe to a paid SAAS API. Hopefully this helps to move things forward.

Footnotes

  1. Server-side rendering and prerendering work, and it is possible to produce static pages without javascript, but for the pages rendered client-side there is a lot of optimization still to be done.

  2. Requires plugins.

  3. Requires plugins.

  4. Requires plugins and a new bit of API.

  5. Theoretically any serverless host that supports SvelteKit should work with SvelteCMS.

About

A content manager built with sveltekit, for sveltekit projects. Sensible and extensible, declarative config.

Resources

Stars

13 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

What is SvelteCMS?

SvelteCMS is an attempt at creating a new kind of Content Management System that builds fast SvelteKit websites with content models from a configurable CMS but doesn't require running a server or subscribing to a content SAAS. SvelteCMS...

  • is software, not a product or service.
  • runs as part of the site, not on a separate system.
  • builds performant web apps, with minimal code on content pages, SSR and prerendering.1
  • builds sites that work without Javascript, so no more blank white screens.
  • is database agnostic: store content in any server, repository, or database provider2.
  • supports data portability: mix, match, and migrate content between storage solutions3.
  • [] supports community interaction: manage user accounts from install4.
  • supports serverless architecture: deploy CMS endpoints to any serverless provider5.
  • supports static site generation: build locally and deploy to any web host.
  • works in the browser: go truly "serverless" with Web Containers or isomorphic git.
  • supports complex content models: conditional, nested, and calculated fields.
  • manages the full content cycle: entry, storage, retrieval and display.
  • enables code-free site building: go from data architecture to display with no code.
  • is extensible: extend CMS functionality with components, plugins and hooks.
  • is free for any number of sites, users, content types, plugins, etc.

Installation

You can create a new SvelteCMS project, including the SvelteKit setup, using npm:


> npm create sveltecms@latest
> npm run dev

Optional: Use TailwindCSS

SvelteCMS works very well with TailwindCSS (and likely with similar utility css frameworks like WindyCSS) for display of elements and ad-hoc styles in content. TailwindCSS can parse classes in the SvelteCMS config file and in locally stored content, but it needs to be told where to look for the files and how to recognize the classes. Luckily SvelteCMS comes with the proper functions already in the tailwind.config.cjs file. However, you still need to install and configure Tailwind and PostCSS:

  • Install Tailwind (and any plugins):

    You can either do this manually or with a svelte-add command, e.g. npx svelte-add@latest tailwindcss --tailwindcss-typography

  • Afterward, don't forget to run npm install!

Optional: Setup YAML for configuration

If you want to use YAML instead of JSON for storing SvelteCMS configuration, you will want to install and configure @rollup/plugin-yaml.

  • Install the plugin:
    npm install @rollup/plugin-yaml

  • Configure Vite to use the plugin in vite.config.js:

    importyamlfrom'@rollup/plugin-yaml'
    ...
    constconfig={plugins: [
    ...
    yaml(),]};
  • Configure SvelteCMS to use the correct file in src/lib/cms.ts:
    import conf from './sveltecms.config.json'
    import conf from './sveltecms.config.yml'

  • Add type for .yml files in src/app.d.ts \

    declareglobal{// other stuff...module"*.yml"{constvalue: any;exportdefaultvalue;}}

Usage

You should have a new SvelteKit project with SvelteCMS included You will find SvelteCMS-specific files in the src/routes/(cms) folder.

For local development, you can start SvelteKit as you normally would:

npm run dev

...Why?

What is this? A center for ANTS!? It needs to be at least ... three times bigger!
- Derek Zoolander

SvelteCMS was made to demonstrate and jump-start my vision for what a Content Management System could be in 2023. I want to build fast modern websites with content models from a configurable CMS, but I don't want to run a server or subscribe to a paid SAAS API. Hopefully this helps to move things forward.

Footnotes

  1. Server-side rendering and prerendering work, and it is possible to produce static pages without javascript, but for the pages rendered client-side there is a lot of optimization still to be done.

  2. Requires plugins.

  3. Requires plugins.

  4. Requires plugins and a new bit of API.

  5. Theoretically any serverless host that supports SvelteKit should work with SvelteCMS.

About

A content manager built with sveltekit, for sveltekit projects. Sensible and extensible, declarative config.

Resources

Stars

13 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

What is SvelteCMS?

SvelteCMS is an attempt at creating a new kind of Content Management System that builds fast SvelteKit websites with content models from a configurable CMS but doesn't require running a server or subscribing to a content SAAS. SvelteCMS...

  • is software, not a product or service.
  • runs as part of the site, not on a separate system.
  • builds performant web apps, with minimal code on content pages, SSR and prerendering.1
  • builds sites that work without Javascript, so no more blank white screens.
  • is database agnostic: store content in any server, repository, or database provider2.
  • supports data portability: mix, match, and migrate content between storage solutions3.
  • [] supports community interaction: manage user accounts from install4.
  • supports serverless architecture: deploy CMS endpoints to any serverless provider5.
  • supports static site generation: build locally and deploy to any web host.
  • works in the browser: go truly "serverless" with Web Containers or isomorphic git.
  • supports complex content models: conditional, nested, and calculated fields.
  • manages the full content cycle: entry, storage, retrieval and display.
  • enables code-free site building: go from data architecture to display with no code.
  • is extensible: extend CMS functionality with components, plugins and hooks.
  • is free for any number of sites, users, content types, plugins, etc.

Installation

You can create a new SvelteCMS project, including the SvelteKit setup, using npm:


> npm create sveltecms@latest
> npm run dev

Optional: Use TailwindCSS

SvelteCMS works very well with TailwindCSS (and likely with similar utility css frameworks like WindyCSS) for display of elements and ad-hoc styles in content. TailwindCSS can parse classes in the SvelteCMS config file and in locally stored content, but it needs to be told where to look for the files and how to recognize the classes. Luckily SvelteCMS comes with the proper functions already in the tailwind.config.cjs file. However, you still need to install and configure Tailwind and PostCSS:

  • Install Tailwind (and any plugins):

    You can either do this manually or with a svelte-add command, e.g. npx svelte-add@latest tailwindcss --tailwindcss-typography

  • Afterward, don't forget to run npm install!

Optional: Setup YAML for configuration

If you want to use YAML instead of JSON for storing SvelteCMS configuration, you will want to install and configure @rollup/plugin-yaml.

  • Install the plugin:
    npm install @rollup/plugin-yaml

  • Configure Vite to use the plugin in vite.config.js:

    importyamlfrom'@rollup/plugin-yaml'
    ...
    constconfig={plugins: [
    ...
    yaml(),]};
  • Configure SvelteCMS to use the correct file in src/lib/cms.ts:
    import conf from './sveltecms.config.json'
    import conf from './sveltecms.config.yml'

  • Add type for .yml files in src/app.d.ts \

    declareglobal{// other stuff...module"*.yml"{constvalue: any;exportdefaultvalue;}}

Usage

You should have a new SvelteKit project with SvelteCMS included You will find SvelteCMS-specific files in the src/routes/(cms) folder.

For local development, you can start SvelteKit as you normally would:

npm run dev

...Why?

What is this? A center for ANTS!? It needs to be at least ... three times bigger!
- Derek Zoolander

SvelteCMS was made to demonstrate and jump-start my vision for what a Content Management System could be in 2023. I want to build fast modern websites with content models from a configurable CMS, but I don't want to run a server or subscribe to a paid SAAS API. Hopefully this helps to move things forward.

Footnotes

  1. Server-side rendering and prerendering work, and it is possible to produce static pages without javascript, but for the pages rendered client-side there is a lot of optimization still to be done.

  2. Requires plugins.

  3. Requires plugins.

  4. Requires plugins and a new bit of API.

  5. Theoretically any serverless host that supports SvelteKit should work with SvelteCMS.

About

A content manager built with sveltekit, for sveltekit projects. Sensible and extensible, declarative config.

Resources

Stars

13 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

What is SvelteCMS?

SvelteCMS is an attempt at creating a new kind of Content Management System that builds fast SvelteKit websites with content models from a configurable CMS but doesn't require running a server or subscribing to a content SAAS. SvelteCMS...

  • is software, not a product or service.
  • runs as part of the site, not on a separate system.
  • builds performant web apps, with minimal code on content pages, SSR and prerendering.1
  • builds sites that work without Javascript, so no more blank white screens.
  • is database agnostic: store content in any server, repository, or database provider2.
  • supports data portability: mix, match, and migrate content between storage solutions3.
  • [] supports community interaction: manage user accounts from install4.
  • supports serverless architecture: deploy CMS endpoints to any serverless provider5.
  • supports static site generation: build locally and deploy to any web host.
  • works in the browser: go truly "serverless" with Web Containers or isomorphic git.
  • supports complex content models: conditional, nested, and calculated fields.
  • manages the full content cycle: entry, storage, retrieval and display.
  • enables code-free site building: go from data architecture to display with no code.
  • is extensible: extend CMS functionality with components, plugins and hooks.
  • is free for any number of sites, users, content types, plugins, etc.

Installation

You can create a new SvelteCMS project, including the SvelteKit setup, using npm:


> npm create sveltecms@latest
> npm run dev

Optional: Use TailwindCSS

SvelteCMS works very well with TailwindCSS (and likely with similar utility css frameworks like WindyCSS) for display of elements and ad-hoc styles in content. TailwindCSS can parse classes in the SvelteCMS config file and in locally stored content, but it needs to be told where to look for the files and how to recognize the classes. Luckily SvelteCMS comes with the proper functions already in the tailwind.config.cjs file. However, you still need to install and configure Tailwind and PostCSS:

  • Install Tailwind (and any plugins):

    You can either do this manually or with a svelte-add command, e.g. npx svelte-add@latest tailwindcss --tailwindcss-typography

  • Afterward, don't forget to run npm install!

Optional: Setup YAML for configuration

If you want to use YAML instead of JSON for storing SvelteCMS configuration, you will want to install and configure @rollup/plugin-yaml.

  • Install the plugin:
    npm install @rollup/plugin-yaml

  • Configure Vite to use the plugin in vite.config.js:

    importyamlfrom'@rollup/plugin-yaml'
    ...
    constconfig={plugins: [
    ...
    yaml(),]};
  • Configure SvelteCMS to use the correct file in src/lib/cms.ts:
    import conf from './sveltecms.config.json'
    import conf from './sveltecms.config.yml'

  • Add type for .yml files in src/app.d.ts \

    declareglobal{// other stuff...module"*.yml"{constvalue: any;exportdefaultvalue;}}

Usage

You should have a new SvelteKit project with SvelteCMS included You will find SvelteCMS-specific files in the src/routes/(cms) folder.

For local development, you can start SvelteKit as you normally would:

npm run dev

...Why?

What is this? A center for ANTS!? It needs to be at least ... three times bigger!
- Derek Zoolander

SvelteCMS was made to demonstrate and jump-start my vision for what a Content Management System could be in 2023. I want to build fast modern websites with content models from a configurable CMS, but I don't want to run a server or subscribe to a paid SAAS API. Hopefully this helps to move things forward.

Footnotes

  1. Server-side rendering and prerendering work, and it is possible to produce static pages without javascript, but for the pages rendered client-side there is a lot of optimization still to be done.

  2. Requires plugins.

  3. Requires plugins.

  4. Requires plugins and a new bit of API.

  5. Theoretically any serverless host that supports SvelteKit should work with SvelteCMS.

About

A content manager built with sveltekit, for sveltekit projects. Sensible and extensible, declarative config.

Resources

Stars

13 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages