Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

BytesCraftIO/snapdocs

Repository files navigation

πŸ“ SnapDocs - A Modern, Open-Source Document Workspace

SnapDocs Editor

πŸš€ A Modern, Open-Source Document Workspace

Build your second brain with a powerful block-based editor and real-time collaboration

⚠️ Beta Status: This project is under active development. Features may change.

GitHub stars GitHub forks GitHub issues License Docker Pulls

Features β€’ Quick Start β€’ Tech Stack β€’ Docker β€’ Contributing


🎯 What is SnapDocs?

SnapDocs is a **self-hostable, open-source document workspace ** that empowers teams and individuals to create, organize, and collaborate on documents with ease. Built with modern web technologies, it offers a seamless experience for managing your knowledge base, notes, and documentation.

Why SnapDocs?

  • πŸ”’ Full Data Ownership - Host on your infrastructure, keep your data private
  • 🎨 Modern & Clean UI - Beautiful interface built with shadcn/ui
  • ⚑ Lightning Fast - Optimized performance with Next.js 14
  • πŸ”§ Highly Customizable - Open source and extensible
  • 🐳 Easy Deployment - One-command Docker setup

✨ Features

πŸ“„ Rich Block Editor

  • Multiple Block Types - Text, headings, lists, todos, code blocks, quotes, and more
  • Drag & Drop - Effortlessly reorganize content by dragging blocks
  • Slash Commands - Quick block insertion with / command menu
  • Nested Pages - Create unlimited page hierarchies
  • Rich Text Formatting - Bold, italic, underline, and more

πŸ‘₯ Real-Time Collaboration

  • Live Presence - See who's viewing and editing in real-time
  • Instant Sync - Changes update across all users immediately
  • User Avatars - Visual indicators showing active collaborators
  • @Mentions - Tag team members with notifications
  • Activity Notifications - Get notified when mentioned or when pages are updated

🏒 Workspace Management

  • Multiple Workspaces - Organize content into separate workspaces
  • Member Management - Invite team members and manage permissions
  • Page Organization - Sidebar navigation with nested page structure
  • Favorites - Quick access to important pages
  • Database Views - Create structured databases within pages with table views
  • Custom Properties - Add custom fields to database entries

🎨 User Experience

  • Search - Quick search across all your content
  • Settings Panel - Customize your workspace preferences
  • Responsive Design - Works seamlessly on desktop and tablet

πŸ“Έ Screenshots

Editor Interface

Rich Block Editor with Real-time Collaboration

Settings Panel

Comprehensive Settings & Customization

πŸš€ Quick Start

Get SnapDocs running in under 5 minutes!

Prerequisites

🐳 Docker Installation (Recommended)

# Clone the repository
mkdir snapdocs && cd snapdocs
curl https://raw.githubusercontent.com/BytesCraftIO/snapdocs/refs/heads/main/docker-compose.yml -o docker-compose.yml
# Start all services with one command
docker-compose --profile production up -d
# Access SnapDocs at http://localhost:3000

That's it! SnapDocs is now running with all required services.

πŸ’» Local Development

# Clone the repository
git clone https://github.com/BytesCraftIO/snapdocs.git
cd snapdocs
# Install dependencies
pnpm install
# Start infrastructure services
docker-compose up -d
# Run database migrations
pnpm db:migrate
# Start development server
pnpm dev
# Visit http://localhost:3000

πŸ›  Tech Stack

Next.js
Next.js 14 React
React 19 TypeScript
TypeScript Tailwind
Tailwind CSS PostgreSQL
PostgreSQL MongoDB
MongoDB
Redis
Redis Prisma
Prisma Docker
Docker Socket.io
Socket.io shadcn/ui
shadcn/ui MinIO
MinIO S3

Architecture Highlights

  • Frontend: Next.js 14 App Router, React 19, TypeScript, Tailwind CSS
  • UI Components: shadcn/ui (built on Radix UI), Lucide Icons
  • Editor: Custom block editor with drag-and-drop support
  • Databases: PostgreSQL (metadata) + MongoDB (document content)
  • Real-time: Socket.io for live collaboration
  • Authentication: NextAuth.js with secure sessions
  • File Storage: MinIO (S3-compatible object storage)
  • Caching: Redis for performance optimization

🐳 Docker Deployment

One-Command Setup

# Production deployment with all services
docker-compose --profile production up -d

This starts:

  • βœ… PostgreSQL database
  • βœ… MongoDB for document storage
  • βœ… Redis cache
  • βœ… MinIO for file uploads
  • βœ… SnapDocs application

Environment Variables

Create a .env file for production:

# Database
POSTGRES_PASSWORD=secure_password
MONGO_ROOT_PASSWORD=secure_password
# Authentication 
NEXTAUTH_SECRET=generate-a-secret-key
# Optional
REDIS_PASSWORD=optional_redis_password
S3_ACCESS_KEY=custom_minio_key
S3_SECRET_KEY=custom_minio_secret

Docker Hub

Pull the pre-built image:

docker pull bytescraftio/snapdocs:latest

🀝 Contributing

We love contributions! Whether it's bug fixes, new features, or documentation improvements, we welcome all help.

How to Contribute

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

Development Setup

# Install dependencies
pnpm install
# Run tests
pnpm test
# Lint code
pnpm lint
# Type check
pnpm typecheck

πŸ“ Environment Configuration

Required Variables

Variable Description Example
DATABASE_URL PostgreSQL connection string postgresql://user:pass@localhost:5432/snapdocs
MONGODB_URI MongoDB connection string mongodb://admin:pass@localhost:27017/snapdocs
NEXTAUTH_SECRET Auth encryption secret your-secret-key-here
NEXTAUTH_URL Application URL http://localhost:3000

Optional Services

Variable Description Default
REDIS_URL Redis cache connection redis://localhost:6379
S3_ENDPOINT MinIO/S3 endpoint http://localhost:9000
S3_ACCESS_KEY S3 access key minioadmin
S3_SECRET_KEY S3 secret key minioadmin

πŸ—ΊοΈ Roadmap

  • Database Views - Table views within pages
  • Mentions & Notifications - Tag team members and get notified
  • Mobile Apps - iOS and Android applications
  • API Access - REST API for third-party integrations
  • Advanced Permissions - Granular access control
  • Additional Database Views - Kanban, Calendar, Gallery views
  • Templates - Pre-built page templates
  • Webhooks - Integration with external services
  • Export Options - PDF, Markdown, HTML export
  • Plugin System - Extensible architecture

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

πŸ’¬ Community & Support


Built with ❀️ by the SnapDocs Community

If you find SnapDocs useful, please consider giving it a ⭐ on GitHub!

Star on GitHub

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /