Sign inSign up

daryan997/pluma

By daryan997

•Updated 3 months ago

Open-source blogging platform built with Nuxt 3 and Supabase.

Image
Content management system
0

10K+

daryan997/pluma repository overview

⁠Pluma

Pluma Logo

Open-source blogging platform built with Nuxt 3⁠ and Supabase⁠.

Demo: pluma.daryandev.com⁠

⁠Features

  • Roles: admin, author, and reader
  • Posts with Markdown editor, drafts, scheduled publish, and preview links
  • Categories, series, comments (with moderation)
  • Multi-language UI and content (en, ku, ar, es, fr, de)
  • SSR with sitemap, RSS, robots.txt, and Open Graph / Twitter meta
  • Branding, logos, favicon, and homepage layout from the dashboard
  • Docker image, or deploy on Vercel / Netlify

⁠Stack

LayerTechnology
AppNuxt 3, Vue 3, Tailwind CSS
Auth & dataSupabase (Postgres, Auth, Storage)
RuntimeNitro (Node SSR)

⁠Requirements

  • Node.js 20+
  • A Supabase project (or compatible Postgres + Auth + Storage)

⁠Quick start

git clone https://github.com/Daryan97/pluma.git
cd pluma
npm install
cp .env.example .env

Edit .env with your Supabase URL, anon key, and public site URL (see .env.example⁠).

⁠Database
ScenarioWhat to run
New projectOpen /install in the browser, or run src/install/pluma_initial.sql⁠ in the Supabase SQL editor
Upgrade (series / schedule / preview)src/install/pluma_features_v2.sql⁠
Upgrade (i18n content)src/install/pluma_i18n_v3.sql⁠ (after v2)
Broken storage/settings RLS after restoresrc/install/pluma_rls_fix.sql⁠

Do not re-run v2/v3 after a fresh pluma_initial.sql install; those features are already included.

⁠Development
npm run dev

Open http://localhost:3000⁠. In development, /test is available for diagnostics.

⁠Production (local)
npm run build
npm start

⁠Configuration

Use only VITE_* variables (do not also set NUXT_PUBLIC_*).

VariableRequiredDescription
VITE_SUPABASE_URLYesSupabase API URL
VITE_SUPABASE_ANON_KEYYesSupabase anon key
VITE_SITE_URLYesPublic origin (canonical URLs, sitemap, RSS, i18n)
VITE_ENVYesproduction or development
VITE_SITE_LOCALENoDefault locale (default en)
VITE_TWITTER_SITENoTwitter/X @handle for cards
VITE_FEEDS_CACHE_TTL_MSNoFeed cache TTL in ms (default 300000)

⁠Docker

Published image: daryan997/pluma⁠

docker compose -f docker-compose.example.yml up -d

Or set the same VITE_* variables on any container that runs daryan997/pluma:latest (port 80).

Full deployment docs: docs/DEPLOY.md⁠.

One-click hosts:

Deploy with Vercel Deploy to Netlify

⁠Documentation

⁠License

MIT⁠

Tag summary

Content type

Image

Digest

sha256:54c42d305…

Size

50.8 MB

Last updated

3 months ago

docker pull daryan997/pluma