Skip to content

janyksteenbeek/uuri

Repository files navigation

🕐 Uuri

A personal time tracking tool that actually makes sense.

Uuri is a lightweight, console-based time tracking application built with Laravel Zero. Born from personal frustration with overcomplicated time management tools, Uuri focuses on simplicity and speed while providing seamless integration with Moneybird for billing.

✨ Why Uuri?

Most time tracking tools are either too complex, too slow, or require you to think too much about what you're doing. Uuri was created from a simple desire:

Just start tracking time quickly, describe what you did when you're done, and sync it to Moneybird effortlessly.

No complicated projects, no endless forms, no heavy interfaces. Just fast, intuitive time tracking that stays out of your way.

🚀 Features

⚡ Lightning-Fast Time Tracking

  • One command to rule them all: php application report
  • Smart state detection: Automatically handles running, paused, or multiple timers
  • No upfront planning: Start tracking instantly, add descriptions when you're done

🎯 Intelligent Workflow

  • Start tracking: No description needed, just hit enter and go
  • End tracking: Describe what you accomplished
  • Smart continuation: Handles multiple running timers gracefully

💼 Moneybird Integration

  • Client selection: Choose from your Moneybird clients with smart search
  • Automatic sync: Push time entries to Moneybird with one command
  • Billing ready: All entries sync as billable time automatically

📊 Clean Data Management

  • SQLite storage: Fast, reliable, no server needed
  • Sync tracking: Never duplicate entries in Moneybird
  • Duration formatting: Human-readable time displays (2h 30m 15s)

🛠 Installation

Prerequisites

  • PHP 8.1+
  • Composer

Setup

# Clone and install
git clone https://github.com/janyksteenbeek/uuri.git
cd uuri
composer install

# Setup database
php application migrate

# Configure Moneybird (optional)
php application token YOUR_MONEYBIRD_API_TOKEN

📖 Usage

Basic Time Tracking

Start tracking time:

php application report
# ⏰ Time tracking started!

With description (optional):

php application report "Working on website redesign"

Stop tracking and add details:

php application report
# Shows current timer, choose "End current time entry"
# Enter description: Fixed login bug and improved UX
# Assign to Moneybird client? [Y/n] 

Smart Multi-Timer Handling

When you have one timer running:

  • Shows current time and duration
  • Options: End timer, Start new timer, Cancel

When you have multiple timers:

  • Lists all running timers with durations
  • Options: End specific timer, End all timers, Start new timer

Moneybird Integration

Configure your API token:

php application token YOUR_MONEYBIRD_API_TOKEN

Sync time entries:

# Sync all ready entries
php application sync

# Dry run (see what would sync)
php application sync --dry-run

# Sync specific entry
php application sync --id=123

# Bulk sync without confirmation
php application sync --all

Client Selection:

  • By number: Type 5 to select client #5
  • By search: Type google to find "Google Cloud EMEA"
  • Smart matching: Partial names work perfectly

🎮 Commands

Command Description Examples
report Start/stop time tracking php application report
sync Sync entries to Moneybird php application sync --dry-run
token Manage Moneybird token php application token --show

Command Options

Report Command:

php application report [description]

Sync Command:

php application sync [--dry-run] [--id=ID] [--all]

Token Command:

php application token [token] [--show] [--remove]

�� Tips & Tricks

Workflow Optimization

  1. Start fast: Just run php application report and start working
  2. Describe later: Add meaningful descriptions when ending timers
  3. Batch sync: Use sync --all at end of day/week
  4. Client search: Type partial names instead of scrolling through lists

Smart Features

  • Duration minimum: Entries sync with minimum 1 minute to Moneybird
  • Client caching: Client names are cached for faster display
  • Duplicate prevention: Synced entries are marked to prevent re-sync
  • Description reuse: Option to use time entry description for Moneybird

🔧 Technical Details

Built with:

  • Laravel Zero: Lightweight console framework
  • SQLite: Local database storage
  • Moneybird API: Time entry synchronization
  • PHP 8.1+: Modern PHP features

Architecture:

  • TimeEntry Model: Core time tracking logic
  • MoneybirdHelper: API integration and client management
  • Commands: User interface and workflow management

🤝 Contributing

Uuri was built for personal use but improvements are welcome! Feel free to:

  • Report bugs or suggest features
  • Submit pull requests
  • Share your workflow improvements

📝 License

MIT License - Feel free to use this for your own time tracking needs.

🙏 Inspiration

Created out of frustration with existing time tracking tools that require too much thinking upfront. Sometimes you just want to start working and figure out the details later.

About

A personal time tracking tool that actually makes sense

Topics

Resources

Stars

Watchers

Forks

Languages