PHPackages                             k-bit/laravel-keeping - 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. [API Development](/categories/api)
4. /
5. k-bit/laravel-keeping

ActiveLibrary[API Development](/categories/api)

k-bit/laravel-keeping
=====================

A Laravel package to use the API of the Keeping time registration tool

v1.0.6.2(2y ago)035PHP

Since Mar 17Pushed 2y ago1 watchersCompare

[ Source](https://github.com/K-Bit-dev/laravel-keeping)[ Packagist](https://packagist.org/packages/k-bit/laravel-keeping)[ RSS](/packages/k-bit-laravel-keeping/feed)WikiDiscussions master Synced 4w ago

READMEChangelog (1)Dependencies (3)Versions (10)Used By (0)

Summary
=======

[](#summary)

This is a simple library which can be used to communicate with timemanagement tool Keeping.

### Installation

[](#installation)

```
composer require k-bit/laravel-keeping

```

Add the following items to your `.env` file:

```
KEEPING_TOKEN="XXXXX"
KEEPING_ORGANISATION_ID="1234"
```

---

### Example for creating a new time entry

[](#example-for-creating-a-new-time-entry)

The example below shows how you can create a new time entry in Keeping.

Import the required dependancies:

```
use KBit\LaravelKeeping\KeepingClient;
use KBit\LaravelKeeping\Model\TimeEntry;
```

Setup a connection with Keeping:

```
```

As a simple example, we now retrieve all the available projects, grab the first of them, and create a time entry for that project.:

See: [https://developer.keeping.nl/#tag/reports/paths/~1{organisation\_id}~1report/get](https://developer.keeping.nl/#tag/reports/paths/~1%7Borganisation_id%7D~1report/get)

```
$keepingClient = new KeepingClient();

// If you don't provide an ID to the getUser function as the first parameter,
// your own user (== the one who is attached to your authorisation token) will
// be returned as a default.
$user = $keepingClient->getUser();
$project = $keepingClient->getProjects()->first();

// Create a time entry
$entry = new TimeEntry([
    'user_id' => $user->id,
    'project_id' => $project->id,
    'date' => (new \DateTime)->format('Y-m-d'),
    'purpose' => 'work',
    'note' => 'Creating a new entry with laravel-keeping',
    'hours' => 1,
]);

$keepingClient->postTimeEntry($entry);
```

---

### Example for getting a client-based report

[](#example-for-getting-a-client-based-report)

The example below retrieves a report for a specific client. Please refer to the Keeping API documentation for a complete list of possible query options.

Import the required dependancies:

```
use KBit\LaravelKeeping\KeepingClient;
use KBit\LaravelKeeping\Model\Report;
```

Retrieve the report data:

```
$clientId = 12345;

$reportQuery = [
  'from' => '2021-01-01',
  'to' => '2021-12-31',
  'row_type' => Report::REPORT_ROW_TYPE_MONTH,
  'client_ids' => [$clientId],
  'page' => 1,
  'per_page' => 100,
];

// Retrieve an overview of the hours made in each month
$summary = $keepingClient->getReport($reportQuery);

// Retrieves a Collection with TimeEntry models for all the entries that match the specified query variables.
$timeEntriesCollection = $keepingClient->getReportTimeEntries($reportQuery);
```

---

#### TODO:

[](#todo)

This package supports all of the API endpoints that are currently provided by the Keeping. There are some improvements that can be made in the future:

- Adding support for Keeping's paginated responses
- Adding validation to the query parameters arrays for various endpoints

###  Health Score

26

↓

LowBetter than 43% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity7

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity58

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 92.9% 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 ~141 days

Recently: every ~197 days

Total

9

Last Release

751d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/80df4e267fcbeee7c272cc992d96a35d10a45070c916259abde8892bd9cbf1ce?d=identicon)[XanderTenBoden](/maintainers/XanderTenBoden)

---

Top Contributors

[![XanderTenBoden](https://avatars.githubusercontent.com/u/6901151?v=4)](https://github.com/XanderTenBoden "XanderTenBoden (13 commits)")[![gvankruijsdijk](https://avatars.githubusercontent.com/u/80785638?v=4)](https://github.com/gvankruijsdijk "gvankruijsdijk (1 commits)")

---

Tags

laravelkeeping

### Embed Badge

![Health badge](/badges/k-bit-laravel-keeping/health.svg)

```
[![Health](https://phpackages.com/badges/k-bit-laravel-keeping/health.svg)](https://phpackages.com/packages/k-bit-laravel-keeping)
```

###  Alternatives

[irazasyed/telegram-bot-sdk

The Unofficial Telegram Bot API PHP SDK

3.3k4.5M84](/packages/irazasyed-telegram-bot-sdk)[dcblogdev/laravel-microsoft-graph

A Laravel Microsoft Graph API (Office365) package

168285.5k1](/packages/dcblogdev-laravel-microsoft-graph)[vluzrmos/slack-api

Wrapper for Slack.com WEB API.

102589.1k3](/packages/vluzrmos-slack-api)[smodav/mpesa

M-Pesa API implementation

16363.7k1](/packages/smodav-mpesa)[dcblogdev/laravel-xero

A Laravel Xero package

53129.1k1](/packages/dcblogdev-laravel-xero)[simplestats-io/laravel-client

Client for SimpleStats!

4515.5k](/packages/simplestats-io-laravel-client)

PHPackages © 2026

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