
Build your second brain with a powerful block-based editor and real-time collaboration
Features β’ Quick Start β’ Tech Stack β’ Docker β’ Contributing
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.
- π 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
- 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
- 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
- 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
- Search - Quick search across all your content
- Settings Panel - Customize your workspace preferences
- Responsive Design - Works seamlessly on desktop and tablet
Get SnapDocs running in under 5 minutes!
- Docker & Docker Compose
- Git
- Node.js 18+ (for local development)
# 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.
# 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
Next.js 14 |
React 19 |
TypeScript |
Tailwind CSS |
PostgreSQL |
MongoDB |
Redis |
Prisma |
Docker |
Socket.io |
shadcn/ui |
MinIO S3 |
- 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
# 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
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
Pull the pre-built image:
docker pull bytescraftio/snapdocs:latest
We love contributions! Whether it's bug fixes, new features, or documentation improvements, we welcome all help.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to your branch (
git push origin feature/amazing-feature
) - Open a Pull Request
# Install dependencies
pnpm install
# Run tests
pnpm test
# Lint code
pnpm lint
# Type check
pnpm typecheck
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 |
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 |
- 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
This project is licensed under the MIT License - see the LICENSE file for details.
- π Report Issues
- π‘ Request Features
- π Documentation
- π Star on GitHub