bamboohr-cli

Version, currently 1.0.12 versions

github.com/josacar/bamboohr-cli

A modern, interactive command-line interface for BambooHR time tracking. Features real-time session updates, XDG-compliant configuration, secure credential management with masked input, and professional terminal prompting powered by crystal-term/prompt.

1 stars
0 dependents
License: MIT

Nothing has been indexed for 1.0.1 yet. The tag is recorded, its shard.yml has not been read, so the manifest and dependency list below are empty because they are unknown rather than because they are absent.

Installation

# Add this to your shard.yml
dependencies:
  bamboohr-cli:
    github: josacar/bamboohr-cli
    version: ~> 1.0.1

Then run:

shards install

shard.yml

No shard.yml has been indexed for 1.0.1. You can read it on the repository.

Dependencies

Unknown: the shard.yml for this version has not been read yet.

README

This README is the one indexed from the repository at its latest ref, not from the tag for this version.

BambooHR Time Tracker CLI

Crystal CI License: MIT Crystal Version

A modern, interactive command-line interface for BambooHR time tracking, built with Crystal. Features real-time session updates, XDG-compliant configuration management, and secure credential storage.

โœจ Features

  • ๐Ÿ• Interactive clock in/out functionality
  • โฑ๏ธ Real-time display of current session duration (updates every second when clocked in)
  • ๐Ÿ“Š Live daily total time tracking (includes current session + completed sessions)
  • ๐ŸŽจ Colorized output for better visibility
  • ๐Ÿ”„ Automatic status updates with periodic API refresh
  • ๐Ÿ›ก๏ธ Error handling and network resilience
  • ๐Ÿ“ XDG-compliant configuration management with YAML files
  • ๐Ÿ” Secure credential storage with proper file permissions

๐Ÿš€ Quick Start

Prerequisites

  • Crystal programming language (>= 1.0.0)
  • BambooHR account with API access
  • BambooHR API key

Installation

From Source

git clone https://github.com/josacar/bamboohr-cli.git
cd bamboohr-cli
make build
sudo make install  # Optional: install to system PATH

Using Shards

# Add to your shard.yml
dependencies:
  bamboohr-cli:
    github: josacar/bamboohr-cli
    version: ~> 1.0.0

First Run

# First run will prompt for configuration
bamboohr-cli

# Output:
๐Ÿ”ง BambooHR CLI Configuration Setup
No configuration file found. Let's set up your BambooHR credentials.

Enter your BambooHR company domain: mycompany
Enter your BambooHR API key: ******
Enter your employee ID: 123

๐Ÿ’พ Save this configuration for future use? [Y/n]: y
๐Ÿ’พ Configuration saved to ~/.config/bamboohr-cli/config.yml

๐Ÿ“– Usage

Interactive Mode

bamboohr-cli

Example Output

๐ŸŽฏ BambooHR Time Tracker
Company: mycompany
Employee ID: 12345
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

๐ŸŸข CLOCKED IN | Current session: 2h 15m 30s | Daily total: 6h 45m 30s
Press ENTER to clock out (Ctrl+C to exit):

Real-time updates when clocked in:

  • Current session time updates every second
  • Daily total includes current session + previous sessions
  • Live display without interrupting user interaction

Command Line Options

bamboohr-cli --help          # Show help information
bamboohr-cli --version       # Show version information
bamboohr-cli --config        # Show configuration file information
bamboohr-cli --config-remove # Remove saved configuration file

โš™๏ธ Configuration

Configuration File Locations

The CLI follows the XDG Base Directory Specification:

  • User config: ~/.config/bamboohr-cli/config.yml
  • System config: /etc/xdg/bamboohr-cli/config.yml

Configuration Priority

  1. User configuration file
  2. System configuration file
  3. Environment variables
  4. Interactive prompts (saved to user config)

Environment Variables

export BAMBOOHR_COMPANY="your_company_domain"
export BAMBOOHR_API_KEY="your_api_key"
export BAMBOOHR_EMPLOYEE_ID="your_employee_id"

Configuration File Format

# BambooHR CLI Configuration
# Your BambooHR company domain (e.g., 'mycompany' for mycompany.bamboohr.com)
company_domain: "mycompany"

# Your BambooHR API key (generate from Settings > API Keys in BambooHR)
api_key: "your_api_key_here"

# Your employee ID (found in your BambooHR profile URL)
employee_id: "123"

๐Ÿ—๏ธ Development

Building from Source

# Clone the repository
git clone https://github.com/josacar/bamboohr-cli.git
cd bamboohr-cli

# Install dependencies
shards install

# Build the application
make build

# Run tests
make test

# Build optimized release version
make release

Running Tests

# Run all tests
crystal spec

# Run specific test file
crystal spec spec/bamboohr_api_spec.cr

# Run tests with verbose output
crystal spec --verbose

๐Ÿ”ง API Integration

BambooHR API Endpoints Used

  • POST /api/v1/time_tracking/employees/{employeeId}/clock_in - Clock in
  • POST /api/v1/time_tracking/employees/{employeeId}/clock_out - Clock out
  • GET /api/v1/time_tracking/timesheet_entries - Get time entries

Getting Your BambooHR Credentials

  1. Company Domain: Your BambooHR subdomain (e.g., if your URL is mycompany.bamboohr.com, use mycompany)
  2. API Key: Generate from Settings > API Keys in your BambooHR admin panel
  3. Employee ID: Found in your BambooHR profile URL or employee directory

๐Ÿ›ก๏ธ Security

  • Secure file permissions: Configuration files created with 0o600 (owner-readable only)
  • No credential exposure: API keys stored in user's private directory
  • Input validation: All user input validated and sanitized
  • Error handling: Sensitive information not exposed in error messages

๐Ÿ› Troubleshooting

Common Issues

  1. "Invalid API key": Verify your API key is correct and has proper permissions
  2. "Employee not found": Check your employee ID is correct
  3. "Network error": Check internet connection and BambooHR service status
  4. "Permission denied": Ensure your API key has time tracking permissions

Debug Information

# Show configuration information
bamboohr-cli --config

# Check file permissions
ls -la ~/.config/bamboohr-cli/

# Verify configuration file content
cat ~/.config/bamboohr-cli/config.yml

๐Ÿค Contributing

We welcome contributions! Please see CONTRIBUTING.md for guidelines.

Quick Contribution Guide

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes and add tests
  4. Ensure tests pass (make test)
  5. Commit your changes (git commit -m 'feat: add amazing feature')
  6. Push to the branch (git push origin feature/amazing-feature)
  7. Open a Pull Request

๐Ÿ“ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ™ Acknowledgments

๐Ÿ“Š Project Stats

  • Language: Crystal
  • License: MIT
  • Platforms: macOS, Linux, Unix-like systems

๐Ÿ”— Links


Made with โค๏ธ and Crystal