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.git2. Install Dependencies
Navigate into the project directory and install the required packages using pnpm (recommended) or npm:
cd synax-docs
pnpm install3. 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 devYour 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.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request