The current bash implementation is feature-complete and serves as a personal productivity tool with the following capabilities:
- Core Work Tracking:
work on/off/statuscommands - Database Management: SQLite with sessions and state tracking
- Desktop Notifications:
notify-sendintegration - Shell Integration: Dynamic prompt modification with
⏳ [Project]indicator - Intelligent Nudging: Periodic reminders every 10 minutes via cron
- Refocus Shell Control:
work enable/disablecommands - Data Import/Export: JSON-based backup and restore functionality
- Professional Installation:
setup.shwith interactive installation - Cross-Distribution Support: Ubuntu/Debian, Arch/Manjaro, Fedora/RHEL, openSUSE
- Dependency Management: Automatic installation of
sqlite3,notify-send,jq - Verbose Mode:
--verboseflag for debugging - Manual Testing:
work test-nudgecommand
work-manager/
├── work # Main work tracking script
├── work-nudge # Cron-executed nudging script
├── setup.sh # Installation and setup script
├── config.sh # Configuration template
└── ~/.local/refocus/ # Data directory
├── refocus.db # SQLite database
├── work-nudge # Installed nudging script
└── config.sh # User configuration
- Portfolio Development: Showcase modern development skills
- Privacy-First: FLOSS philosophy, no Google dependencies
- Cross-Device Productivity: Seamless work tracking across desktop and mobile
- User Choice: Configurable sync strategies and conflict resolution
-
Termux + Android (Primary Focus)
- Native Android notifications via
termux-notification - Android widgets and shortcuts
- Background sync services
- Location-aware work triggers
- Native Android notifications via
-
Self-Hosted Web API (Advanced Users)
- RESTful API for real-time sync
- WebSocket for live updates
- User's own infrastructure
- Complete data sovereignty
Desktop (Bash) ←→ Sync Layer ←→ Mobile (Python)
↓ ↓ ↓
Local DB Configurable Local DB
(SQLite) Resolution (SQLite)
# work_manager/
├── core/
│ ├── database.py # SQLAlchemy models
│ ├── notifications.py # Desktop/mobile notifications
│ ├── shell.py # Shell integration
│ └── sync.py # Sync algorithms
├── cli/
│ └── commands.py # Click-based CLI
├── mobile/
│ ├── termux.py # Android integration
│ └── notifications.py # Mobile notifications
└── config/
└── sync_config.py # Sync configuration# work-mobile/
├── main.py # Mobile CLI entry point
├── android/
│ ├── notifications.py # Native Android notifications
│ ├── widgets.py # Android widget integration
│ └── shortcuts.py # Quick action shortcuts
├── sync/
│ ├── import_export.py # File-based sync
│ └── server_sync.py # API-based sync
└── config/
└── mobile_config.py # Mobile-specific settings# sync-server/ (Optional)
├── api/
│ ├── sync.py # REST API endpoints
│ └── websocket.py # Real-time updates
├── database/
│ └── models.py # Sync data models
└── config/
└── server_config.py # Server configuration- Manual file transfer between devices
- Smart merge algorithms instead of override
- Configurable conflict resolution
- No server required
- Privacy-first approach
- Real-time sync via REST API
- WebSocket connections for live updates
- User's own infrastructure
- Complete data control
- Advanced features (webhooks, integrations)
{
"conflict_resolution": {
"active_session": "desktop_wins", // desktop_wins, mobile_wins, earliest_wins, ask
"settings": "newest_wins", // newest_wins, desktop_wins, mobile_wins, ask
"sessions": "merge_all", // merge_all, desktop_wins, mobile_wins, ask
"prompts": "desktop_wins" // desktop_wins, mobile_wins, newest_wins, ask
},
"sync_method": "import_export", // import_export, self_hosted
"auto_sync": false, // true, false
"sync_interval": 300 // seconds
}- Desktop Wins: Always prefer desktop data
- Mobile Wins: Always prefer mobile data
- Newest Wins: Use most recently modified data
- Earliest Wins: For active sessions, use the one that started first
- Ask User: Interactive resolution for each conflict
- Smart Merge: Intelligent combination of data
- Cross-Platform Development: Desktop + Mobile integration
- Data Synchronization: Complex merge algorithms and conflict resolution
- Privacy-First Design: FLOSS philosophy, user data sovereignty
- Mobile Development: Android integration via Termux
- API Design: RESTful APIs and WebSocket connections
- Configuration Management: Flexible user preferences
- Testing: Comprehensive test suites for sync algorithms
- Deployment: Self-hosted infrastructure
- Productivity Continuity: Work tracking that follows users across devices
- Context Awareness: Different behaviors based on location/device
- Privacy Protection: No dependency on Google or cloud services
- User Empowerment: Complete control over data and sync behavior
- F-Droid Package: Available on open app store
- No Google Play: Pure FLOSS distribution
- GitHub/GitLab: Complete source code visibility
- Community Driven: Open for contributions
- Installation Guides: For both sync methods
- Configuration Examples: Conflict resolution strategies
- Privacy Documentation: Data handling and sovereignty
- Development Guides: Contributing to the project
- Design database schema for mobile sync
- Implement core Python package structure
- Create basic CLI commands (on/off/status)
- Implement import/export functionality
- Develop Termux Python script
- Implement Android notifications
- Create mobile CLI interface
- Basic sync functionality
- Implement smart merge algorithms
- Create configurable conflict resolution
- Add interactive resolution options
- Test sync scenarios
- Self-hosted server option
- WebSocket real-time sync
- Android widgets and shortcuts
- Location-aware triggers
- Comprehensive testing
- Documentation and guides
- F-Droid packaging
- Community setup
- Zero data loss during sync operations
- Configurable conflict resolution working
- Privacy-first design maintained
- Cross-platform compatibility achieved
- Demonstrates full-stack development skills
- Shows understanding of mobile development
- Exhibits privacy and FLOSS values
- Solves real-world productivity problems
- Seamless work tracking across devices
- User control over sync behavior
- Privacy protection maintained
- FLOSS philosophy respected
- Current bash tool remains unchanged - serves personal needs perfectly
- Python version is portfolio expansion - showcases modern development skills
- Privacy and FLOSS values are core - no Google dependencies
- User choice is paramount - configurable sync strategies
- Real-world problem solving - cross-device productivity tracking
This roadmap transforms a personal productivity tool into a comprehensive portfolio piece that demonstrates technical breadth, user-centric design, and commitment to privacy and open source values.