Skip to content

jirenmaa/Pluma

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pluma

Pluma (Latin for "feather" or "pen") is a real-time collaborative documentation platform inspired by Google Docs. It uses modern web technologies to provide a seamless writing experience where multiple users can edit, and comment simultaneously.

preview


Key Features

  • Real-time Collaboration: Powered by Liveblocks and Lexical, allowing multiple users to edit the same document with live cursor tracking and presence indicators.

  • Access Control: * Invitations: Authors can invite collaborators via email.

  • Role Management: Assign roles as Editor (full edit rights) or Viewer (read-only).

  • Collaborator Removal: Owners maintain full control over the access list.

  • Live Notifications: Stay updated when you are mentioned in a comment or granted access to a new document.

  • Responsive Rich Text Editor: A floating toolbar and optimized editor interface built for both desktop and mobile productivity.


Tech Stack

Pluma is built with a focus on type safety, scalability, and developer experience:

  • Framework: Next.js (App Router & Server Actions)
  • Editor Engine: Lexical (React-based rich text framework)
  • Real-time Engine: Liveblocks (WebSockets, Presence, and Storage)
  • Authentication: Clerk (Secure user management and auth)
  • Monitoring: Sentry (Error tracking and performance monitoring)
  • Styling: Tailwind CSS & Shadcn/UI

Logo taken from svgviewer


Getting Started

1. Clone the repository

2. Install dependencies

pnpm install 

or 

npm install

3. Environment Setup

Create a .env.local file in the root directory and add the following keys from your respective providers:

# Clerk (Auth)
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=
CLERK_SECRET_KEY=

# Liveblocks (Real-time)
NEXT_PUBLIC_LIVEBLOCKS_PUBLIC_KEY=
LIVEBLOCKS_SECRET_KEY=

4. Run the development server

npm run dev

Open http://localhost:3000 with your browser to see the result.


Project Structure

Pluma follows a modular architecture to separate concerns between the collaborative engine and the UI:

  • /components: Reusable UI components (Modals, Headers, etc.)
  • /lib/actions: Server Actions for document CRUD and permission logic.
  • /lib/liveblocks: Configuration for the real-time presence and storage.
  • /plugins: Custom Lexical plugins for the editor toolbar and floating menus.

About

Real-time collaborative documentation platform inspired by Google Docs

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors