Skip to main content

Basic work hour tracking tool for freelancers

Project description

freetracker

A command-line application for freelancers to track working hours per client/project.

Features

  • Client Management: Add, edit, delete, and list clients
  • Project Management: Create projects with hours quoted and due dates
  • Time Tracking: Start/stop timers with active timer notifications, manual time entry
  • Tab Completion: Auto-complete client and project names while typing
  • Progress Reports: Visual progress bars showing project completion
  • Data Export: Export reports as CSV or view in terminal
  • Beautiful UI: Rich terminal formatting with tables and progress bars
  • Local Storage: All data stored locally using TinyDB

Installation

Prerequisites

  • Python 3.12 or higher
  • uv package manager

Quick Install (Recommended)

Install freetracker as a standalone CLI tool using uv:

uv tool install freetracker

This installs freetracker globally, making the freetracker command available anywhere in your terminal.

Development Setup

  1. Clone the repository:
git clone https://github.com/tensorturtle/freetracker.git
cd freetracker
  1. Install dependencies:
uv sync

Usage

Getting Started

  1. Add a client:
freetracker client add
  1. Add a project for the client:
freetracker project add
  1. Start tracking time:
freetracker start
  1. Stop tracking time:
freetracker stop
  1. View reports:
freetracker report

Client Management

# Add a new client
freetracker client add

# List all clients
freetracker client list

# Edit a client
freetracker client edit

# Delete a client (and all its projects)
freetracker client delete

Project Management

# Add a new project
freetracker project add

# List all projects
freetracker project list

# List projects for a specific client
freetracker project list --client <client_id>

# Edit a project
freetracker project edit

# Delete a project
freetracker project delete

Time Tracking

# Start timer for a project
freetracker start

# Stop the active timer
freetracker stop

# Check timer status
freetracker status

# Manually add hours (if you forgot to start timer)
freetracker add

# View time entry log
freetracker log

# View time entries for specific project
freetracker log "Project Name"

Reports and Export

# Generate visual report with progress bars
freetracker report

# Export report as CSV
freetracker report --csv

# Export to specific file
freetracker report --csv --output my_report.csv

Data Structure

  • Clients: Simple name-based client records
  • Projects: Each project has:
    • Name
    • Hours quoted (integer)
    • Due date
    • Associated client
  • Time Entries:
    • Automatic tracking of start/stop times
    • Manual time entry for forgotten sessions

Pro Tips

  1. Use names, not IDs: When adding projects or starting timers, just enter the client/project name
  2. Tab completion: Press Tab to auto-complete client and project names when prompted
  3. Active timer notification: The app shows your active timer on every command
  4. Progress visualization: The report command shows beautiful progress bars
  5. Data location: All data is stored in ~/.freetracker/db.json (or custom path via FREETRACKER_DB_PATH)
  6. Case insensitive: Client and project name matching is case insensitive

Configuration

Database Location

By default, freetracker stores its database at ~/.freetracker/db.json. You can customize this location using the FREETRACKER_DB_PATH environment variable:

# Use a custom database location
export FREETRACKER_DB_PATH=/path/to/your/database.json
freetracker client list

# Use a temporary database for testing
export FREETRACKER_DB_PATH=/tmp/freetracker_test.json
freetracker client add

# Use cloud storage (e.g., Dropbox)
export FREETRACKER_DB_PATH="$HOME/Dropbox/freetracker/db.json"
freetracker start

This is useful for:

  • Development: Use a separate test database without affecting production data
  • Cloud Sync: Store your database in Dropbox, Google Drive, or other cloud storage
  • Multiple Profiles: Maintain separate databases for different contexts

Technology Stack

  • Package Manager: uv - Fast Python package manager
  • CLI Framework: Click - Command-line interface creation
  • UI Library: Rich - Beautiful terminal formatting
  • Database: TinyDB - Lightweight document database

Development

See CLAUDE.md for detailed development instructions and project structure.

License

MIT License - Copyright (c) 2025 Jason (Janghyup) Sohn

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

freetracker-0.2.0.tar.gz (17.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

freetracker-0.2.0-py3-none-any.whl (14.6 kB view details)

Uploaded Python 3

File details

Details for the file freetracker-0.2.0.tar.gz.

File metadata

  • Download URL: freetracker-0.2.0.tar.gz
  • Upload date:
  • Size: 17.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.13

File hashes

Hashes for freetracker-0.2.0.tar.gz
Algorithm Hash digest
SHA256 9cdfde19b93ee06c002f847a224700fc35df9e02a1bf1b98285d5459bf23b55f
MD5 0c1944bdcad978070528e2c41523e0fc
BLAKE2b-256 86ecc2b7d2d049b97099f315b0d0894c73a29a13696d72b7ad4718832f28e6eb

See more details on using hashes here.

File details

Details for the file freetracker-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for freetracker-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8fa3080c969664e9c4739e636ce5da651120a7395100a03c444667422a34cc55
MD5 33978390b7e5f8a16a30dd55e2f768df
BLAKE2b-256 244ae7c11ab97cebb84a30dd1717b7ba18fd41f7219f6a54b050127313db3743

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page