PHPackages                             wearebraid/carbon-availability - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. wearebraid/carbon-availability

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

wearebraid/carbon-availability
==============================

The easiest way to determine calendar availability using Carbon.

1.0.1(6y ago)410.8k↓33.3%[1 PRs](https://github.com/wearebraid/carbon-availability/pulls)MITPHP

Since Nov 1Pushed 1y ago3 watchersCompare

[ Source](https://github.com/wearebraid/carbon-availability)[ Packagist](https://packagist.org/packages/wearebraid/carbon-availability)[ RSS](/packages/wearebraid-carbon-availability/feed)WikiDiscussions master Synced yesterday

READMEChangelogDependencies (3)Versions (4)Used By (0)

CarbonAvailability
==================

[](#carbonavailability)

[![Build Status](https://camo.githubusercontent.com/b9f3fcb3e202007b5721e3a88be049ac228358683959f99fa5b3bd737ffe1535/68747470733a2f2f7472617669732d63692e636f6d2f776561726562726169642f636172626f6e2d617661696c6162696c6974792e7376673f6272616e63683d6d6173746572)](https://travis-ci.com/wearebraid/carbon-availability)

Given some available times and some unavailable times how do you determine what time slots you can schedule an event of a certain duration (think something like [calendly](https://calendly.com/))? Well – it's surprisingly hard – unless you're using this.

```
use Braid\CarbonAvailability;

/**
 * [==========]                            | Available time blocks
 *               [========]                |
 *                        [==========]     | ______________________
 *                    [xxxxxxx]            | Booked time blocks
 *                                [x]      | ______________________
 * [==========] [====]         [=]         | Merged availability
 * |  |  |  |   |  |           |           | Available sessions
 */

$availability = [
    ['2019-01-01 09:00:00', '2019-01-01 10:00:00'],
    ['2019-01-01 10:15:00', '2019-01-01 11:00:00'],
    ['2019-01-01 11:00:00', '2019-01-01 12:00:00']
];

$booked = [
    ['2019-01-01 10:45:00', '2019-01-01 11:30:00'],
    ['2019-01-01 11:50:00', '2019-01-01 11:55:00']
];

$availability = new CarbonAvailability($availability, $booked);
$startTimes = $availability->session('15 minutes');
/* Returns the following Carbon\Carbon date times (2019-01-01):
09:00
09:15
09:30
09:45
10:15
10:30
11:30
*/
```

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

[](#installation)

```
composer require wearebraid/carbon-availability
```

###  Health Score

35

—

LowBetter than 77% of packages

Maintenance30

Infrequent updates — may be unmaintained

Popularity27

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity60

Established project with proven stability

 Bus Factor1

Top contributor holds 90% 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 ~38 days

Total

2

Last Release

2397d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/db85c379f90173f437183b21df031e20997aaac69c7046fd927c2a3b57663d39?d=identicon)[justin-schroeder](/maintainers/justin-schroeder)

![](https://avatars.githubusercontent.com/u/60235651?v=4)[Braid, Inc.](/maintainers/braid)[@braid](https://github.com/braid)

---

Top Contributors

[![justin-schroeder](https://avatars.githubusercontent.com/u/1950463?v=4)](https://github.com/justin-schroeder "justin-schroeder (9 commits)")[![devoidofgenius](https://avatars.githubusercontent.com/u/4098997?v=4)](https://github.com/devoidofgenius "devoidofgenius (1 commits)")

---

Tags

carbonavailabilityunavailability

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/wearebraid-carbon-availability/health.svg)

```
[![Health](https://phpackages.com/badges/wearebraid-carbon-availability/health.svg)](https://phpackages.com/packages/wearebraid-carbon-availability)
```

###  Alternatives

[illuminate/support

The Illuminate Support package.

630113.0M41.3k](/packages/illuminate-support)[spatie/holidays

Calculate public holidays

402860.1k2](/packages/spatie-holidays)[craftcms/feed-me

Import content from XML, RSS, CSV or JSON feeds into entries, categories, Craft Commerce products, and more.

293952.6k33](/packages/craftcms-feed-me)[solspace/craft-freeform

The most flexible and user-friendly form building plugin!

54681.3k18](/packages/solspace-craft-freeform)[pimcore/data-importer

Adds a comprehensive import functionality to Pimcore Datahub

46855.5k5](/packages/pimcore-data-importer)[japanese-date/japanese-date

日本の暦、祝日を取り扱うライブラリ

1610.0k](/packages/japanese-date-japanese-date)

PHPackages © 2026

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