Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

Layer Technology
App Nuxt 3, Vue 3, Tailwind CSS
Auth & data Supabase (Postgres, Auth, Storage)
Runtime Nitro (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

Scenario What to run
New project Open /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)
Multi-step login lookup src/install/pluma_login_lookup.sql
Broken storage/settings RLS after restore src/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_*).

Variable Required Description
VITE_SUPABASE_URL Yes Supabase API URL
VITE_SUPABASE_ANON_KEY Yes Supabase anon key
VITE_SITE_URL Yes Public origin (canonical URLs, sitemap, RSS, i18n)
VITE_ENV Yes production or development
VITE_SITE_LOCALE No Default locale (default en)
VITE_TWITTER_SITE No Twitter/X @handle for cards
VITE_FEEDS_CACHE_TTL_MS No Feed 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

Contributors

Languages