Zero friction pure progress - A powerful CLI time tracker with SQLite backend
Project description
Simple Time Tracker (V3)
Overview
Simple Time Tracker is a compact, command-line Time + Task management tool. Version 3 introduces project numbering, priority grouping, deadline-aware task highlighting, a high-value flag for urgent tasks, session-based time tracking (for accurate daily summaries), and administrative commands for managing projects and tasks.
Setup
- (Optional) Create and activate a Python virtual environment:
python3 -m venv .venv
source .venv/bin/activate
- Install runtime dependencies:
taskswitch
zero friction pure progress
A powerful command-line time tracker with SQLite backend, intelligent task management, and zero-friction workflows.
Overview
taskswitch is a modern CLI time tracker that combines simplicity with power. Built on SQLite with a clean peewee ORM layer, it offers sub-millisecond performance while tracking your work across projects and tasks with minimal keystrokes.
Key Features
Core Capabilities
- Database-backed: SQLite + peewee ORM for reliability and performance
- Session-based timing: Accurate time tracking with UTC timestamps
- Project management: 3-digit project numbers (001-999) with auto-padding
- Task tracking: 4-digit task IDs with full lifecycle management
- Priority queue: Track up to 3 high-priority projects
- Daily summaries: CET/CEST-aware Markdown logs in
logs/
Zero-Friction Workflows
- Quick switching: Type
5to switch to project 005 - Projectless tasks: Start tracking by typing any text - gets auto-assigned task ID
- Bulk operations:
DELETE 1 2 3to delete multiple projects at once - Smart display: Hidden projects, priority views, single-project isolation
- Task mobility: Move tasks between projects with
MOVE #### ###
Smart Task Intelligence
Deadline Awareness
- Set deadlines:
0123 12252025(task ID + mmddyyyy) - Auto-detect deadlines in task descriptions
- Color-coded urgency:
- 🔴 RED: Due in <4 days (critical)
- 🟡 YELLOW: Due in 4-7 days (urgent)
- 🔵 CYAN: Due in 8+ days (planned)
High-Value Flagging
- Mark important tasks:
0123 !!! - High-value tasks display in yellow (when no deadline overrides)
- Precedence: RED > YELLOW (deadline) > Yellow (value flag) > CYAN
Installation
pip install taskswitch
Or from source:
git clone https://github.com/DP26112/simple-time-tracker.git
cd simple-time-tracker
pip install -r requirements.txt
python -m taskswitch
Quick Start
# Launch the tracker
python -m taskswitch
# Create a project
ADD PROJECT MyProject
# Add a task with project number
ADD 001 TASK Fix the authentication bug
# Start working on task
0001
# Take a break
BREAK
# View all projects
LIST PROJECTS
# Get help
LIST COMMANDS
Command Reference
Type LIST COMMANDS in the app for the full interactive reference. Here are the essentials:
Project Management
ADD PROJECT <Name> # Create new project
ADD ### TASK <Description> # Add task by project number
END ### [### ...] # End one or more projects
DELETE ### [### ...] # Delete one or more projects
HIDE <Name> [UNTIL mmddyyyy] # Hide project (optionally until date)
UNHIDE <Name> # Unhide project
Priority Management
ADD PRIORITY ### [### ...] # Add projects to priority (max 3)
END PRIORITY ### # Remove from priority list
LIST PRIORITY (or LIST PRI) # View priority projects
Task Management
#### # Start/resume task by ID
<text> # Start projectless task (auto-assigns ID)
TASK <Description> # Add task to last active project
MOVE #### ### # Move task to different project
END #### [#### ...] # End one or more tasks
DELETE #### [#### ...] # Delete one or more tasks
#### !!! # Flag task as high-value
#### mmddyyyy # Set task deadline
Viewing
LIST PROJECTS (or LIST PROJ) # View all projects and tasks
LIST PROJ ### # View single project
### # Quick switch to project view
LIST HIDE # View hidden projects
LIST COMMANDS # Show full command reference
Special
BREAK # Take a break
REST # Extended break
CLS or CLEAR # Clear screen
QUIT # Exit tracker
Architecture
Database Schema
- Projects: name (unique), number (001-999), priority/hidden flags, unhide_date
- Tasks: task_id (primary key), description, project (nullable FK), status, deadline, is_value
- TimeEntry: Historical time logs with duration and timestamps
- Config: Key-value store for app state (active_task, start_time, priority list)
Performance
- SQLite with peewee ORM
- Indexed lookups on project names and task IDs
- Sub-millisecond response for typical operations
- Handles 1000+ projects/tasks without lag
Configuration
Edit config.yaml to customize:
- Database path
- Log directory
- Timezone (for daily summaries)
- Auto-summary timing
Development
Running Tests
python -m pytest tests/
Project Structure
taskswitch/
├── __init__.py # Package entry, version
├── __main__.py # CLI entry point
├── commands.py # Command handlers
├── db_state_manager.py # Database operations
├── models.py # Peewee ORM models
├── shell.py # Interactive shell (cmd.Cmd)
├── display.py # Output formatting
├── timer.py # Time tracking logic
└── reporting.py # Daily summaries
Migration from V3
If you have existing JSON-based data from V3, contact the maintainer for migration assistance. V4 uses SQLite exclusively.
Contributing
Pull requests welcome! Please:
- Add tests for new features
- Update documentation
- Follow existing code style
- Keep performance in mind
License
MIT License - See LICENSE file for details
Links
- GitHub: https://github.com/DP26112/simple-time-tracker
- Issues: https://github.com/DP26112/simple-time-tracker/issues
- PyPI: (coming soon)
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file taskswitch-4.1.5.tar.gz.
File metadata
- Download URL: taskswitch-4.1.5.tar.gz
- Upload date:
- Size: 83.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
14423496c7f1a9270324f9073e5dbdb484445a385390079379335ee64cb81eb9
|
|
| MD5 |
d16e5adb0c868deda7b3493bc665f538
|
|
| BLAKE2b-256 |
c6fa227ec9c40635ce7e64a8799262e7952642db25d716d0b0d81901dad42734
|
File details
Details for the file taskswitch-4.1.5-py3-none-any.whl.
File metadata
- Download URL: taskswitch-4.1.5-py3-none-any.whl
- Upload date:
- Size: 94.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0fad2dcda7d289daf7b7f585b1962cee49d2fe6b206ae58e36bbe867d522dcd0
|
|
| MD5 |
99aa0177a96fd97a49e70fdf6fa75d89
|
|
| BLAKE2b-256 |
7679d19a032c4e5f65dda99f04cf1256563d83f774c32b319d72632274779c6b
|