Build your second brain with a powerful block-based editor and real-time collaboration
GitHub stars GitHub forks GitHub issues License Docker Pulls
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
Rich Block Editor with Real-time Collaboration
Settings PanelComprehensive Settings & Customization
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
React 19 TypeScript
TypeScript Tailwind
Tailwind CSS PostgreSQL
PostgreSQL MongoDB
MongoDB
- 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 -dThis 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
If you find SnapDocs useful, please consider giving it a β on GitHub!
Star on GitHub