Decentralized, offline-first, end-to-end encrypted family collaboration for Calendar, Tasks, and Email.
DOFTool is a privacy-focused desktop application that helps families stay organized with shared calendars, tasks, and email management. Your data stays private with zero-knowledge encryption and syncs automatically between family devices over your local network—no cloud servers required.
- Create a family and invite members via QR code or token
- Role-based permissions (Admin, Parent, Child, Guest)
- Device management with per-device access controls
- Secure family data with end-to-end encryption
- Create multiple calendars with custom colors
- Schedule events with recurrence support
- Set reminders and notifications
- Import/Export via iCal format
- Per-calendar and per-event sharing permissions
- Organize tasks into lists
- Set priorities, due dates, and assignees
- Subtasks and checklists
- Kanban board view
- Import/Export via JSON
- Full IMAP/SMTP email client
- Connect Gmail, Outlook, and other providers
- Family internal messaging system
- Shared inbox access
- Send-as permissions for family members
Note: The email module is currently being rebuilt. See STATUS.md for details.
- Offline-first: works without internet
- P2P sync over local WiFi (mDNS discovery)
- Zero-knowledge E2EE (only your family can read data)
- CRDT-based conflict resolution (no data loss)
- No cloud servers required
Coming soon
Download the latest release for your platform:
| Platform | Download |
|---|---|
| Windows | DOFTool-win.zip |
| macOS | DOFTool.dmg |
| Linux | DOFTool.AppImage |
Note: DOFTool is currently in active development (v0.1.0). Pre-release builds may be available.
- Windows: Windows 10/11 (64-bit)
- macOS: macOS 11 Big Sur or later
- Linux: Ubuntu 20.04+, Fedora 34+, or equivalent
Launch DOFTool and click "Create Family". Enter:
- Family name
- Your display name
- A strong passphrase (this encrypts all family data)
Important: Write down your passphrase! It cannot be recovered.
- Go to Settings → Family → Invite Member
- Choose the member's role (Parent, Child, Guest)
- Share the QR code or copy the invite link
- The new member scans/enters the code on their device
Once devices are on the same WiFi network, they automatically discover and sync with each other. Look for the sync indicator in the status bar.
- Node.js >= 20.x
- npm >= 10.x
- Git >= 2.40
# Clone the repository
git clone https://github.com/asterixix/DOFTool.git
cd DOFTool
# Install dependencies
npm install
# Start development server
npm run dev| Script | Description |
|---|---|
npm run dev |
Start Electron in development mode |
npm run build |
Build for production |
npm run test |
Run unit tests |
npm run test:e2e |
Run E2E tests |
npm run lint |
Lint code |
npm run format |
Format code with Prettier |
npm run typecheck |
TypeScript type checking |
DOFTool/
├── electron/ # Electron main process
│ ├── main.ts # Main entry point
│ ├── preload.ts # Preload script (IPC bridge)
│ └── services/ # Core services
│ ├── EncryptionService.ts # E2EE encryption
│ ├── YjsService.ts # CRDT sync
│ ├── EmailService.ts # IMAP/SMTP
│ ├── NotificationService.ts # System notifications
│ └── ... # Other services
├── src/ # React renderer
│ ├── app/ # App shell, routing, providers
│ ├── components/ui/ # Shared UI components (shadcn/ui)
│ ├── hooks/ # Shared React hooks
│ └── modules/ # Feature modules
│ ├── family/ # Family management
│ ├── calendar/ # Calendar feature
│ ├── tasks/ # Tasks feature
│ ├── email/ # Email client (in development)
│ └── sync/ # Sync status & controls
├── docs/ # Technical documentation
└── tests/ # Test files
# Build for current platform
npm run build
# Build for specific platform
npm run build:win
npm run build:mac
npm run build:linux| Category | Technology |
|---|---|
| Runtime | Electron 33+ |
| Frontend | React 19, TypeScript 5.5+ |
| Build | Vite |
| UI | shadcn/ui, Tailwind CSS 4, Framer Motion |
| State | Zustand, React Query |
| Data | Yjs (CRDT), LevelDB |
| Crypto | libsodium-wrappers |
| Sync | y-webrtc, mDNS (bonjour-service) |
| imapflow, nodemailer | |
| Calendar | ical.js, date-fns |
| Testing | Vitest, React Testing Library, Playwright |
- Getting Started Guide - Quick start for new users
- Troubleshooting - Common issues and solutions
- Architecture - System architecture and design decisions
- Data Model - TypeScript interfaces and schemas
- Security Model - E2EE encryption and key management
- Sync Protocol - P2P synchronization with Yjs
- API Reference - IPC channels and service APIs
- Testing Guide - Testing guidelines and best practices
- Design System - UI components and styling
- Performance - Performance optimization guide
- Environment Variables - Configuration options
- Contributing - How to contribute
DOFTool is designed with privacy as a core principle:
- End-to-End Encryption: All data encrypted with XChaCha20-Poly1305
- Zero Knowledge: No server can read your data
- Local-First: Data stays on your devices
- Open Source: Audit the code yourself
Please report security vulnerabilities privately via GitHub Security Advisories or email artur@sendyka.dev. Do not open public issues for security concerns.
See SECURITY.md for our vulnerability disclosure policy and docs/SECURITY.md for the full security model.
DOFTool uses mDNS (Multicast DNS) to discover other family devices on your local network. Once discovered, devices connect directly via WebRTC and exchange data using Yjs CRDTs which automatically resolve conflicts.
Everything works offline! Changes are stored locally and sync automatically when you reconnect to your family network.
Yes! DOFTool works great as a personal organizer too. The sync features are optional.
Data is stored on each synced device. For additional backup, you can export calendars (iCal) and tasks (JSON) from the app.
Currently, sync requires devices to be on the same local network. Cloud relay support for remote sync is planned for a future release.
- Calendar with recurrence support
- Task management with lists and priorities
- End-to-end encryption (XChaCha20-Poly1305)
- Local P2P sync via mDNS/WebRTC
- Family management with roles
- Yjs CRDT-based conflict resolution
- Email client (IMAP/SMTP) - currently being rebuilt
- External calendar sync (CalDAV)
- Mobile apps (React Native)
- Cloud relay for remote sync
- Calendar/task sharing links
- Plugin system
- Multi-language support
We welcome contributions! Please read our Contributing Guide before submitting PRs.
- Report bugs - Open an issue with reproduction steps
- Suggest features - Discuss ideas in GitHub Discussions
- Improve documentation - Fix typos or clarify explanations
- Submit pull requests - Follow our coding standards
- Help with translations - Internationalization coming soon
DOFTool is open source software licensed under the MIT License.
- Anytype - Inspiration for local-first architecture
- Yjs - CRDT implementation
- shadcn/ui - UI components
- Electron - Desktop framework
- libsodium - Cryptography library
- Author: Artur Sendyka
- Website: sendyka.dev
- GitHub: github.com/asterixix/DOFTool
- Email: artur@sendyka.dev