Complete installation guide for macOS, Linux, and Windows.
# Clone the repository
git clone https://github.com/TechPrototyper/CS50TimeTracker.git
cd CS50TimeTracker
# Run the installer
./install.shAfter installation, the sitr command will be available globally:
sitr --help
sitr user add -f John -l Doe -e john@example.com
sitr start-dayFor contributing or development:
./install.sh --devThis installs SITR in editable mode, so changes to the code take effect immediately.
git clone https://github.com/TechPrototyper/CS50TimeTracker.git
cd CS50TimeTracker
./install.shThe script will:
- ✅ Check Python version (3.10+ required)
- ✅ Install SITR and dependencies
- ✅ Make
sitrcommand available globally
# Install directly via pip
pip3 install .
# Or in development mode:
pip3 install -e .We're working on a Homebrew tap for easier installation:
# Future release
brew tap TechPrototyper/sitr
brew install sitrIf sitr command is not found after installation:
# Add pip's bin directory to your PATH
echo 'export PATH="$HOME/Library/Python/3.11/bin:$PATH"' >> ~/.zshrc
source ~/.zshrcgit clone https://github.com/TechPrototyper/CS50TimeTracker.git
cd CS50TimeTracker
./install.sh# Install system-wide (requires sudo)
sudo pip3 install .
# Or user installation (no sudo):
pip3 install --user .If sitr is not in PATH:
# Add to ~/.bashrc or ~/.zshrc
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrcgit clone https://github.com/TechPrototyper/CS50TimeTracker.git
cd CS50TimeTracker
./install.shgit clone https://github.com/TechPrototyper/CS50TimeTracker.git
cd CS50TimeTracker
pip install .If sitr is not recognized:
-
Find Python Scripts directory:
python -m site --user-base
-
Add to PATH (typically
C:\Users\YourName\AppData\Local\Programs\Python\Python311\Scripts)
After installation, verify everything works:
# Check version
sitr --help
# Should show:
# Usage: sitr [OPTIONS] COMMAND [ARGS]...
# Simple Time Tracker (SITR) - Track your work time efficiently.Test a complete workflow:
# Create a user
sitr user add -f Test -l User -e test@test.com
# Select the user
sitr user select -e test@test.com
# Start your day
sitr start-day
# Check server status
sitr server status./install.sh --uninstallpip3 uninstall sitrRemove all SITR data:
# Remove database
rm sitr.db
# Remove config
rm ~/.sitrconfig
# Remove server PID file
rm -rf ~/.sitrFor contributors:
# Clone repository
git clone https://github.com/TechPrototyper/CS50TimeTracker.git
cd CS50TimeTracker
# Create virtual environment
python3 -m venv .venv
source .venv/bin/activate # macOS/Linux
# or: .venv\Scripts\activate # Windows
# Install in development mode
pip install -e ".[dev]"
# Run tests
pytest
# Run with coverage
pytest --cov=. --cov-report=htmlIf you don't want to install SITR globally:
# Create virtual environment
python3 -m venv .venv
source .venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Run directly
python sitr_cli.py --help
python sitr_cli.py start-dayCreate an alias for convenience:
# Add to ~/.bashrc or ~/.zshrc
alias sitr="python /path/to/CS50TimeTracker/sitr_cli.py"- Python: 3.10 or higher
- Disk Space: ~50MB (including dependencies)
- RAM: ~50MB during operation
- OS: macOS 10.15+, Linux (any modern distro), Windows 10+
All dependencies are installed automatically:
fastapi- REST API frameworkuvicorn- ASGI serversqlmodel- ORMtyper- CLI frameworkrich- Terminal formattingrequests- HTTP clientpsutil- Process managementpydantic- Data validationemail-validator- Email validation
# Check Python version
python3 --version
# Should be 3.10 or higherIf you get permission errors:
# Use --user flag
pip3 install --user .If sitr command is not found:
macOS/Linux:
which sitr # Find where it's installed
echo $PATH # Check if that directory is in PATHWindows:
where sitr
echo %PATH%# Check if port 8000 is available
lsof -i :8000 # macOS/Linux
netstat -ano | findstr :8000 # Windows
# Try restarting
sitr server restart- 📖 README.md - Project overview
- 🚀 QUICKSTART.md - Quick start guide
- 🏗️ ARCHITECTURE.md - Technical documentation
- 🐛 GitHub Issues - Report bugs
For more information, see README.md