About ChainOfDots
My Philosophy
ChainOfDots was created with a simple belief: habit tracking should be beautiful, minimal, respect your privacy, and most of all, not come with a subscription!
Inspired by GitHub's contribution graph, ChainOfDots provides a year-at-a-glance view of your habits with colorful circular dots. No complicated features, no distracting notifications—just a clean, focused tool to help you build better habits.
Open Source & Free
ChainOfDots is completely free and open source under the MIT license. You can:
- Use it for free, forever
- View and audit the source code
- Self-host on your own server
- Fork and modify for your own needs
- Contribute improvements back to the project
Privacy & Security
Your data belongs to you. ChainOfDots implements industry-standard security practices:
- AES-256 encryption - Habit names are encrypted server-side before storage
- Bcrypt password hashing - Your password is never stored in plain text
- User-specific encryption keys - Each user's data uses unique encryption keys
- Server-side sessions - Secure authentication with automatic timeout
- CSRF protection - Protected against cross-site attacks
- Rate limiting - Brute force attack prevention
- Data export - Download your data anytime in CSV or JSON format
- Self-hosting option - Keep complete control of your data
Technology Stack
Frontend
- React 18
- Tailwind CSS
- Pure JavaScript (ES6+)
Backend
- PHP 8.3+
- MySQL database with AES-256 encryption
- Session-based auth
Creator
ChainOfDots is created and maintained by Tom Spetter, a designer/developer passionate about building simple, useful tools that respect user privacy.
Contributing
While ChainOfDots is primarily a personal project, contributions are welcome! Feel free to:
- Report bugs or suggest features via GitHub Issues
- Submit pull requests for bug fixes or improvements
- Fork the project and customize it for your needs
- Share ChainOfDots with others who might find it useful
License
Code: MIT License - Free to use, modify, and distribute
Logo/Branding: © Tom Spetter - Please use your own branding when forking or deploying