PHPackages                             mediashare/marathon - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [CLI &amp; Console](/categories/cli)
4. /
5. mediashare/marathon

ActiveLibrary[CLI &amp; Console](/categories/cli)

mediashare/marathon
===================

Marathon is a command-line tool written in PHP and Symfony that empowers you to efficiently manage times from tasks for your projects.

0.1.10(3mo ago)00PHPPHP &gt;=8.2CI failing

Since Oct 5Pushed 3mo ago1 watchersCompare

[ Source](https://github.com/Mediashare/marathon)[ Packagist](https://packagist.org/packages/mediashare/marathon)[ Docs](https://github.com/Mediashare/marathon)[ RSS](/packages/mediashare-marathon/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (5)Dependencies (16)Versions (23)Used By (0)

Marathon
========

[](#marathon)

![Marathon GitHub Release](https://camo.githubusercontent.com/9d748f3685997dd6f5d01fbfb0df5c815aeb6b33b03f117c53ce95b6943ade7a/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f4d6564696173686172652f6d61726174686f6e2e7376673f7374796c653d666c6174)![Marathon GitHub pull requests](https://camo.githubusercontent.com/02751303025584741f2be2d1bf8c0037fc1d87e7cb380d6732fe592eb4c07003/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6973737565732d70722f4d6564696173686172652f6d61726174686f6e2e7376673f7374796c653d666c6174)

Introduction
------------

[](#introduction)

Marathon is a command-line tool written in PHP and Symfony that empowers you to efficiently **manage todo-list for your projects**. It provides a comprehensive solution for maintaining a project-related activities through commit history.

### Features

[](#features)

- **Commit:** Easily associate time entries with project commits to maintain a history of actions taken during the task.
- **Remaining time:** Organize your time into tasks with time remaining.
- **Emojies supports:** ( 📝 `:pencil:`, 🎉 `:tada:`, 🍺 `:beer:` ect...) 5000+ emojies supported into commit message.
- **Markdown support:** Implementation of markdown synthax into commit message.
- **Custom tags supports:** (``, ``, `` ect...) Implemented into commit message.

Installation
------------

[](#installation)

### Binary

[](#binary)

```
curl --output marathon https://raw.githubusercontent.com/Mediashare/marathon/main/marathon
chmod 755 marathon
sudo cp marathon /usr/local/bin/marathon
marathon
```

### Docker

[](#docker)

#### Dockerfile

[](#dockerfile)

```
git clone https://github.com/Mediashare/marathon
cd marathon
docker build -t marathon .
docker run -it marathon
```

### Composer

[](#composer)

#### Basic

[](#basic)

```
composer require mediashare/marathon
./vendor/mediashare/marathon/bin/marathon
```

#### Global

[](#global)

```
composer global require mediashare/marathon
marathon
```

Usage
-----

[](#usage)

Here are some examples of how to use Marathon:

- To check the time you spend on a project, you can create a task for each phase of the project.
- To check the time you spend on a recurring task, you can create a task with a start date and an end date.
- To check the time you spend on a task with a client or vendor, you can add this information to the task.

### Commands

[](#commands)

```
  marathon task:list                        Displaying the tasks list
  marathon task:start             Starting step of task
  marathon task:stop              Stoping step of task
  marathon task:status            Displaying status of task
  marathon task:archive            Archive the task by ID
  marathon task:delete             Deleting the task by ID

  marathon commit:create   Creating new commit into task
  marathon commit:edit           Editing the commit from task
  marathon commit:delete         Deleting the commit from task

  marathon git:gitignore                    Adding .marathon rule into .gitgnore
  marathon version:update         Update version of Marathon
```

### Task Workflow

[](#task-workflow)

#### Creating a task

[](#creating-a-task)

```
marathon task:start # Start a task without specifying a name.
marathon task:start 123 # Start a task with the specified ID (e.g., ID 123).
marathon task:start --name "Feature Implementation" # Start a task and set the name to "Feature Implementation".
marathon task:start --new # Start a completely new task without specifying a name.
marathon task:start --duration 2h # Start a task and sets the duration of the current step to 2 hours.
marathon task:start --remaining 4h # Start a task and sets the remaining time of the task to 4 hours.
marathon task:start 456 --new --name "New feature" --duration 30min # Start a completely new task with the ID 456 and sets the duration of the current step to 30 minutes.
```

#### Creating a commit

[](#creating-a-commit)

```
marathon commit:create # Create a new commit without specifying a message.
marathon commit:create "Initial commit" # Create a new commit for the current task with the specified message.
marathon commit:create -E # Open default editor for write a message and commit.
marathon commit:create "This is a very long commit message describing the changes made in this commit. It covers multiple lines and provides detailed information about the updates." # Create a new commit with a long and detailed commit message.
marathon commit:create "Your commit message" --duration 1h # Create a new commit with a message and sets its duration to 1 hour.
marathon commit:create "Test update older task with ID 123 or create it" --task-id 123 # Create a new commit for the task specified by the ID.
marathon commit:create "Rollback" --duration "-1hour" # Create a new commit with a message and sets its duration to rollback (negative duration).
```

#### Editing a commit

[](#editing-a-commit)

```
marathon commit:edit  --message "Updated message" --duration 30min # Edit the message and duration of a specific commit.
marathon commit:edit 456 -E # Open default editor for edit a message for commit ID 456.
marathon commit:edit 456 --duration 1h # Edit the commit with ID 456 and updates its duration to 1 hour.
marathon commit:edit 300 --task-id 123 --message "Update commit with ID 300 from task ID 123" # Edit the last commit from the task specified by the ID.
```

#### Deleting a commit

[](#deleting-a-commit)

```
marathon commit:delete  # Delete the commit with ID from the current task.
marathon commit:delete 456 # Delete the commit with ID 123 from the task specified by the ID 111 and save it into the configuration.
marathon commit:delete 300 --task-id 123 # Delete the commit with ID 300 from the task specified by the ID 123.
```

#### Displaying task status

[](#displaying-task-status)

```
marathon task:status # Display the status of the current task.
marathon task:status 123 # Display the status of the task with ID 123.
```

#### Stopping a task step

[](#stopping-a-task-step)

```
marathon task:stop # Stop the current step of the task with the default duration.
marathon task:stop  # Stop the task step with task ID.
marathon task:stop 123 --duration 1h # Stop the task step with ID 123 and updates its duration to 1 hour.
```

#### Archive or deleting a task

[](#archive-or-deleting-a-task)

```
marathon task:archive  # Archive the task with ID without stopping the current step.
marathon task:archive 123 # Archive the task with ID 123.

# or delete the task

marathon task:delete  # Delete the task with ID.
marathon task:delete 123 # Delete the task with ID 123.
```

Archive or delete the current task.

#### Displaying task list

[](#displaying-task-list)

```
marathon task:list # Display the list of tasks.
```

### Additional Commands

[](#additional-commands)

Adding Marathon rule to .gitignore

```
marathon git:gitignore # Add the .marathon rule to your project .gitignore file.
```

### Update Marathon to the latest version

[](#update-marathon-to-the-latest-version)

```
marathon version:update # Update Marathon to the latest version.
```

### Configuration Options

[](#configuration-options)

Marathon provides several configuration options, edit the configuration file with the given parameters, that you can customize:

- `--config-path`: Specify the path to the JSON configuration file.
- `--config-datetime-format`: Set the DateTimeFormat for date format displayed.
- `--config-datetime-zone`: Set the DateTimeZone for UTC used.
- `--config-task-dir`: Set the directory path containing task files.
- `--config-editor`: Set the default editor command to use to write commits messages.

```
marathon task:start --config-path=/path/to/config/file --config-datetime-format="d/m/Y H:i:s" --config-datetime-zone="Europe/London" --config-task-dir=/path/to/tasks/directory --config-editor vim
```

Feel free to explore and make the most of Marathon to streamline your project management workflow!

Contributing
------------

[](#contributing)

Marathon is an open-source project. You can contribute to the project by submitting bug fixes, improvements, or new features.

To contribute to the project, you can follow these instructions:

- Clone the marathon GitHub repository
- Create a branch for your contribution
- Make your changes
- Test your changes with `bin/phpunit`
- Build your bin with `box compile`
- Submit a pull request

### Build a bin with Box

[](#build-a-bin-with-box)

#### Box install

[](#box-install)

[Box2](https://github.com/box-project/box) used for binary generation from php project. **PHP &gt;=8.1 is required.**

```
composer global require humbug/box
box
```

#### Box usage

[](#box-usage)

```
composer install --no-scripts --no-autoloader
composer dump-autoload --optimize
box compile
```

Conclusion
----------

[](#conclusion)

Marathon is a simple and effective tool that can help you better manage your time. If you are looking for a free and open-source time tracker, Marathon is a good option.

###  Health Score

37

—

LowBetter than 83% of packages

Maintenance82

Actively maintained with recent releases

Popularity0

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity51

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~23 days

Recently: every ~104 days

Total

22

Last Release

95d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/68a6b6d77942c3c37f2b184161479d7090bf7efe9d1265b258388947a9c7e16f?d=identicon)[Mediashare-Support](/maintainers/Mediashare-Support)

---

Top Contributors

[![Mediashare](https://avatars.githubusercontent.com/u/12797739?v=4)](https://github.com/Mediashare "Mediashare (88 commits)")

---

Tags

productivitytask-managerterminaltime-trackingtimertodo-clitodo-listtodo-tuitodolisttuicommand-linetimetimerworkflowlisttaskprojectstime trackingproductivitydeveloper-toolsversion controltodotask managementTime Managementcommit historytodo-listmarathon

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/mediashare-marathon/health.svg)

```
[![Health](https://phpackages.com/badges/mediashare-marathon/health.svg)](https://phpackages.com/packages/mediashare-marathon)
```

###  Alternatives

[shopware/platform

The Shopware e-commerce core

3.3k1.5M3](/packages/shopware-platform)[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.4k5.6M651](/packages/sylius-sylius)[prestashop/prestashop

PrestaShop is an Open Source e-commerce platform, committed to providing the best shopping cart experience for both merchants and customers.

9.0k15.4k](/packages/prestashop-prestashop)[shopware/core

Shopware platform is the core for all Shopware ecommerce products.

595.2M386](/packages/shopware-core)[kimai/kimai

Kimai - Time Tracking

4.6k7.4k1](/packages/kimai-kimai)[easycorp/easyadmin-demo

EasyAdmin Demo Application

145.7k](/packages/easycorp-easyadmin-demo)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
