focuz 0.0.1

Lightweight Beautiful Terminal Pomodoro Timer
Documentation
<div align="center">

# ๐ŸŽฏ Focuz

**Lightweight Beautiful Terminal Pomodoro Timer**

[![Crates.io](https://img.shields.io/crates/v/focuz?style=flat-square)](https://crates.io/crates/focuz)
[![Crates.io](https://img.shields.io/crates/d/focuz?style=flat-square)](https://crates.io/crates/focuz)
[![License](https://img.shields.io/badge/license-MIT-blue?style=flat-square)](LICENSE-MIT)
[![Contributors](https://img.shields.io/github/contributors/shiyasmohd/focuz?style=flat-square)](https://github.com/shiyasmohd/focuz/graphs/contributors)

<br/>

</div>


![Screenshot](assets/demo.png)

## ๐Ÿ› ๏ธ Prerequisites

- **Rust** - [Install Rust]https://doc.rust-lang.org/book/ch01-01-installation.html

## ๐Ÿ“ฆ Installation

```bash
cargo install focuz
```

## ๐Ÿš€ Usage

```bash
# Run a timer for specific duration
focuz <duration>
```

### Examples

```bash
focuz 10s    # 10 seconds timer
focuz 5m     # 5 minutes timer  
focuz 2h     # 2 hours timer
focuz 90     # 90 seconds (no suffix defaults to seconds)
```

### Time Format

- `s` or no suffix - seconds (e.g., `30s` or `30`)
- `m` - minutes (e.g., `5m`)
- `h` - hours (e.g., `2h`)

## โŒจ๏ธ Keyboard Shortcuts

| Key | Action |
|-----|--------|
| `q` or `Esc` | Quit the timer |
| `Ctrl+C` | Force quit |


## ๐Ÿ”Š Sound Notifications

- **Start Sound** - Plays when timer begins
- **End Sound** - Plays when timer completes

## ๐Ÿ—๏ธ Building from Source

```bash
# Clone the repository
git clone https://github.com/shiyasmohd/focuz.git
cd focuz

# Build the project
cargo build --release

# Run directly
cargo run -- 5m

```

## ๐Ÿงช Running Tests

```bash
# Run all tests
cargo test

# Run with output
cargo test -- --nocapture
```

## ๐Ÿ“ Project Structure

```
focuz/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ main.rs           # Entry point
โ”‚   โ”œโ”€โ”€ cli/              # Command-line interface
โ”‚   โ”‚   โ”œโ”€โ”€ mod.rs
โ”‚   โ”‚   โ””โ”€โ”€ cli.rs        # CLI parsing and duration handling
โ”‚   โ””โ”€โ”€ timer/            # Timer functionality
โ”‚       โ”œโ”€โ”€ mod.rs
โ”‚       โ”œโ”€โ”€ timer.rs      # Core timer logic
โ”‚       โ”œโ”€โ”€ display.rs    # ASCII art display
โ”‚       โ””โ”€โ”€ sound.rs      # Audio notifications
โ”œโ”€โ”€ sounds/               # Audio files
โ”‚   โ”œโ”€โ”€ start.wav
โ”‚   โ””โ”€โ”€ end.mp3
โ”œโ”€โ”€ Cargo.toml
โ””โ”€โ”€ README.md
```

## ๐Ÿค Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

1. Fork the repository
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add some amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request

## ๐Ÿ“„ License

This project is licensed under the MIT License - see the [LICENSE](LICENSE-MIT) file for details.

<div align="center">
Made with โค๏ธ in Rust ๐Ÿฆ€
</div>