A small CMS with a big heart.
npm create pluto@latest
pnpm create pluto@latest
yarn create pluto
bun create pluto@latest
deno run -A npm:create-pluto@latest
Pluto is in alpha. Expect breaking changes until the first stable release.
From zero to an admin in one command
create-pluto asks a few questions, downloads a template, and installs it. Start the dev server, and your site and its admin are ready.
$ npm create pluto@latest my-shop
A small core. Add a layer when you need it.
Each layer does one job, and it plugs into the admin with one function. Pick layers, and see the admin and the config change.
- Home
- Posts
- Media
- Settings
export default defineNuxtConfig({ extends: [ '@plutocms/core', ] })
Everything a CMS needs, as layers
Each layer does one job. A layer plugs into the admin with one function. You add a layer when you need it.
Layer-based
Pluto is built on Nuxt layers. The core layer gives the admin. Backend and feature layers add data, auth, and content.
Generated admin
Declare a content type once. Pluto makes the list page, the form, the navigation entry, and the dashboard tile.
Capabilities
A layer declares capabilities. A user holds capabilities through roles. The admin is for staff only.
Translated admin
The admin speaks English and Brazilian Portuguese. A new language is a new JSON file.
Mail built in
Pluto sends its own emails through a mail driver. A guided setup page helps you connect Resend.
One Tailwind build
Your app owns the only Tailwind build. The admin keeps its own theme, so your site styles do not change it.
Use it headless, with any stack
The public API gives your published content as JSON. Read it from Next.js, Astro, a mobile app, or a script.
const res = await fetch(
'https://your-site.dev/api/pluto/v1/content/product?limit=2'
)
const { data } = await res.json(){Your backend
Keep the content in Git, or add a database. The admin is the same.
Layers for your next project
Backends, features, and add-ons. Each one is a package on npm.
Core
@plutocms/core
The base layer every Pluto app extends. The admin, the content model, the media library, and the Git CMS.
Supabase
@plutocms/supabase
A Supabase backend. The database, the sign-in, the users, and the roles of the admin.
Shop (Supabase)
@plutocms/supabase-shop
Products on Supabase. Prices, stock, categories, and photos, with a public API for the storefront.
Blog (Supabase)
@plutocms/supabase-blog
Blog posts on Supabase, with a rich text editor, a live preview, and draft and publish controls.
Docs
@plutocms/docs
Edit the Markdown pages of a Nuxt Content site in the Pluto admin, with a visual block editor and a live preview.
3D
@plutocms/3d
3D models in the media library. Upload .glb files, get a preview image, and show the model in the admin and on your site.
Pluto is small. People love it anyway.
In 2006, Pluto lost its title of planet. It is smaller than our Moon. Then, in 2015, the New Horizons probe flew past it, and Pluto was not simple at all.
It has a heart
Pluto has a big, pale plain in the shape of a heart: Tombaugh Regio. The heart is in our logo. Pluto is free and open source, and we want it to be friendly.
It is made of layers
New Horizons saw more than 20 layers of haze in the air of Pluto. Pluto CMS has layers too: a small core, and one layer for each job.
Small is a feature
A dwarf planet is still a world. The core is small, and you add only what you need. Your site stays light.