Introduction

Welcome to the SynaxDocs documentation. SynaxDocs is an open-source, minimalist, and secure real-time collaborative document editor designed for speed and simplicity.

SynaxDocs is "Made in India" and aims to provide a free alternative to complex document editors while maintaining professional-grade collaboration features.


Local Installation

Follow these steps to get SynaxDocs running on your local machine for development or personal use.

1. Clone the Repository

Open your terminal and run the following command to clone the official repository:

git clone https://github.com/user-synax/synax-docs.git

2. Install Dependencies

Navigate into the project directory and install the required packages using pnpm (recommended) or npm:

cd synax-docs
pnpm install

3. Set Up Environment Variables

Create a .env.local file in the root directory and add your credentials for MongoDB, Clerk, and Cloudinary. You can use .env.example as a template.

Configuration

To enable all features, you need to configure the following services:

  • Clerk: For authentication and user management.
  • MongoDB: For storing document metadata and user settings.
  • Cloudinary: For image uploads within the editor.
  • Upstash Redis: For rate limiting and performance.

Once configured, start the development server:

pnpm dev

Your app will be running at http://localhost:3000.


Core Features

The Editor

The SynaxDocs editor is powered by Tiptap, providing a headless, customizable editing experience. It supports:

  • Markdown-style shortcuts (e.g., # for headings)
  • Rich text formatting (Bold, Italic, Underline)
  • Tables, Task Lists, and Code Blocks
  • Image uploads and drag-and-drop support

Real-time Collaboration

SynaxDocs uses Hocuspocus (based on Y.js) for robust CRDT-based collaboration. Multiple users can edit the same document simultaneously without conflicts.

Sharing & Access

You can manage document access through the Share Dialog:

  • Private: Only you have access.
  • Collaborators: Invite specific users via email as Viewers or Editors.
  • Public Links: Enable "Anyone with the link" with View or Edit permissions.

Contributing

We welcome contributions! Whether it's fixing bugs, adding features, or improving documentation.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request