Skip to content

BytesCraftIO/snapdocs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

15 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

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